Connect with us

Entwicklung & Code

Neu in .NET 10.0 [6]: Generische Erweiterungsblöcke in C# 14.0


Erweiterungsblöcke mit dem Schlüsselwort extension habe ich in der vorherigen Folge der Serie zu .NET 10.0 vorgestellt. Ein Erweiterungsblock darf einen oder mehrere generische Typparameter (optional inklusive Einschränkung mit where) besitzen:

Weiterlesen nach der Anzeige

extension(List source) { … }

oder

extension(List source) where T : INumber { … }


Der Dotnet-Doktor – Holger Schwichtenberg

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Folgender Code zeigt eine Klasse mit Erweiterungsblocken für List, wobei T auf Zahlen beschränkt ist, durch where T : INumber:


public static class MyExtensions
{
 extension(List source) where T : INumber // <-- Receiver Ein Erweiterungsblock darf eine oder mehrere generische Typparameter (optional inklusive Constraint) besitzen!!!
 {
  public List WhereGreaterThan(T threshold)
           => source.Where(x => x > threshold).ToList();
 
  public bool IsEmpty
           => !source.Any();
 
  /// 
  /// Erweitern um eine Instanz-Eigenschaft mit Getter und Setter
  /// 
  public int Size
  {
   get { return source.Count; }
   set
   {
    while (value < source.Count) source.RemoveAt(source.Count - 1);
    if (value > source.Count) source.AddRange(Enumerable.Repeat(default(T)!, value - source.Count).ToList());
   }
  }
 
  // NEU: Operatorüberladung als Extension und neu ist auch, dass man += überladen kann
  public void operator +=(int count)
  {
   source.Size = source.Count + count;
  }
 
  // NEU: Operatorüberladung als Extension und neu ist auch, dass man -= überladen kann
  public void operator -=(int count)
  {
   source.Size = source.Count - count;
  }
 
  // NEU: Operatorüberladung als Extension und neu ist auch, dass man ++ überladen kann
  public void operator ++()
  {
   source.Size += 1;
  }
 }
}


Folgender Code ruft die Erweiterungsmethoden für List auf:

Weiterlesen nach der Anzeige


public void Run()
 {
  CUI.Demo(nameof(CS14_ExtensionDemo) + ": Collection");
 
  var list = new List { 1, 2, 3, 4, 5 };
  var large = list.WhereGreaterThan(3);
  Console.WriteLine(large.IsEmpty);
  if (large.IsEmpty)
  {
   Console.WriteLine("Keine Zahlen größer als 3!");
  }
  else
  {
   Console.WriteLine(large.Count + " Zahlen sind größer als 3!");
  }
 
  CUI.H2("list.Size = 10");
  // Das klappt: Die Liste wird auf 10 Elemente mit Nullen aufgefüllt
  list.Size = 10;
  foreach (var x in list)
  {
   CUI.OL(x, separator: " = ");
  }
 
  CUI.H2("list.Size -= 2");
  list.Size -= 2;
  bool restart = true;
  foreach (var x in list)
  {
   CUI.OL(x, separator: " = ", restartCounter: restart);
   restart = false;
  }
 
  CUI.H2("list.Size++");
  list.Size++;
  restart = true;
  foreach (var x in list)
  {
   CUI.OL(x, separator: " = ", restartCounter: restart);
   restart = false;
  }
 }


Der Code erzeugt folgende Ausgabe:



Ausgabe des Beispielcodes


(rme)



Source link

Entwicklung & Code

Software Testing: KI-gestützte Testfallermittlung | heise online


In der neuen Folge des Podcasts Software Testing spricht Richard Seidl mit Mark Menzel von der Landeshauptstadt München über die LLM-basierte Webanwendung MUCGPT und Sherlock, den städtischen Software-Test-KI-Assistenten. Das Gespräch zeigt, dass auch Verwaltung Innovation kann: Prompt Engineering statt Schulungsmarathon, ISO-29119-konforme Testfälle sowie Export nach TestLink und Xray.

Weiterlesen nach der Anzeige

Mark Menzel verfügt über mehr als 25 Jahre Erfahrung im Bereich Softwarequalität und Testmanagement. Nach seiner Promotion in Business Administration spezialisierte er sich auf KI-basierte Testverfahren. Als Testmanager bei der Landeshauptstadt München leitet er dort Testprojekte. Darüber hinaus ist er als Hochschuldozent und Mentor tätig und erforscht, wie KI das Testen revolutionieren kann.

Bei diesem Podcast dreht sich alles um Softwarequalität: Ob Testautomatisierung, Qualität in agilen Projekten, Testdaten oder Testteams – Richard Seidl und seine Gäste schauen sich Dinge an, die mehr Qualität in die Softwareentwicklung bringen.

Die aktuelle Ausgabe ist auch auf Richard Seidls Blog verfügbar: „KI-gestützte Testfallermittlung – Mark Menzel“ und steht auf YouTube bereit.


(mai)



Source link

Weiterlesen

Entwicklung & Code

pandas 3.0 bringt einheitlichen String-Typ und Performance-Optimierung


Fast drei Jahre nach der letzten Hauptversion steht jetzt Version 3.0 von pandas, der Bibliothek zur Datenanalyse mit Python, am Start. Zu den wichtigsten Änderungen gehören der dedizierte String-Data-Typ str, eine verbesserte Copy-on-Write-Methode sowie eine neue Standardauflösung für datums- und zeitähnliche Daten. Letztere verwendet standardmäßig Mikrosekunden statt Nanosekunden, um Grenzwertfehler für Datumsangaben mit einem Jahr vor 1678 oder nach 2262 zu vermeiden.

Weiterlesen nach der Anzeige

Bei installierter PyArrow-Bibliothek interpretiert pandas 3.0 String-Spalten automatisch als Datentyp str statt als NumPy-object. Das soll für Leistungssteigerung und effizientere Zuweisung von Python-Objekten sorgen. Wie der neue Code aussehen kann, zeigt folgendes Beispiel:


# Old behavior (pandas < 3.0)
>>> ser = pd.Series(["a", "b"])
>>> ser
0 a
1 b
dtype: object # <-- numpy object dtype

# New behavior (pandas 3.0)
>>> ser = pd.Series(["a", "b"])
>>> ser.dtype
>>> ser
0 a
1 b
dtype: str # <-- new string dtype


Mit pandas 3.0 ist Copy-on-Write (CoW) nun die Standard-Speicherverwaltungstechnik. Damit verhält sich jedes Index-Ergebnis wie eine Kopie, sodass Änderungen am Ergebnis den ursprünglichen DataFrame nicht beeinflussen.

Da verkettete Zuweisungen nicht mehr funktionieren, entfällt SettingWithCopyWarning. Damit können die copy()-Aufrufe zum Unterdrücken dieser Warnung entfallen, was ebenfalls eine Verbesserung der Performance bedeutet.


# Old behavior (pandas < 3.0) - chained assignment
df["foo"][df["bar"] > 5] = # This might modify df (unpredictable)

# New behavior (pandas 3.0) - must do the modification in one step (e.g. with .loc)
df.loc[df["bar"] > 5, "foo"] = 100


Weiterlesen nach der Anzeige

Mit dem neuen Release hat das Pandas-Team einige veraltete Funktionen entfernt. Deshalb empfiehlt es, zunächst ein Upgrade auf pandas 2.3 durchzuführen, um sicherzustellen, dass der Code ohne Fehlermeldungen läuft. Erst anschließend sollte man den Wechsel auf Version 3.0 angehen.

Installieren lässt sich pandas 3.0 über PyPI mit python -m pip install --upgrade pandas==3.0.* oder über conda-forge mit conda install -c conda-forge pandas=3.0.

In den Release Notes von pandas 3.0.0 lassen sich sämtliche Änderungen im Detail nachlesen. Weil sie ein Code-Update erforderlich machen können, stellen die Entwicklerinnen und Entwickler Migrationsanleitungen zur Verfügung, unter anderem für den neuen String-Data-Typ und die Copy-on-Write-Methode.

Lesen Sie auch


(who)



Source link

Weiterlesen

Entwicklung & Code

Die Produktwerker: Vibe Coding verändert die Produktentwicklung


Immer mehr Produktmenschen bauen selbst Software, statt ausschließlich Konzepte, Anforderungen oder Prototypen zu liefern. Entscheidungen werden direkt im Code sichtbar, Feedbackschleifen verkürzen sich, die Entwicklung gewinnt deutlich an Geschwindigkeit.

Weiterlesen nach der Anzeige

In dieser Podcastfolge diskutieren Oliver Winter und Tim Klein, welche Chancen und Risiken diese Entwicklung für Product Owner, Developer und Produktteams mit sich bringt. Sie beleuchten, warum Vibe Coding schnelles Lernen ermöglicht, gleichzeitig aber die Gefahr besteht, dass Product Discovery, Nutzerfeedback und Validierung in den Hintergrund geraten.

Ein weiterer Fokus liegt auf der veränderten Verantwortung. Wenn Produktentscheidung und Umsetzung zusammenfallen, verschwimmen klassische Rollenbilder. Das kann effizient sein, erfordert jedoch bewusste Auseinandersetzung mit Qualität, Wartbarkeit und langfristigen Auswirkungen.

Die Folge ordnet Vibe Coding als Werkzeug ein, das die Zusammenarbeit stärken kann – vorausgesetzt, Produktdenken, Nutzerorientierung und wirtschaftliche Verantwortung bleiben zentrale Leitplanken.


Product Owner Days 2026

Product Owner Days 2026

(Bild: deagreez/123rf.com)

Fachvorträge und Networking-Möglichkeiten: Die Product Owner Days am 5. und 6. Mai 2026 in Köln befassen sich in über 20 Vorträgen mit aktuellen Themen rund um Product Ownership, KI im Produktmanagement, User Research, Product Discovery und Product Economics.

Die aktuelle Ausgabe des Podcasts steht auch im Blog der Produktwerker bereit: „Lässt Vibe Coding Product-Owner- und Developer-Rollen verschmelzen?“.

Weiterlesen nach der Anzeige


(mai)



Source link

Weiterlesen

Beliebt