AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Overload function

Ein Thema von RWarnecke · begonnen am 20. Nov 2013 · letzter Beitrag vom 23. Nov 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.961 Beiträge
 
Delphi 12 Athens
 
#1

AW: Overload function

  Alt 21. Nov 2013, 11:02
Mit der von mir beschriebenen Nomenklatur ist das im Übrigen nicht 'krampfhaft', sondern intuitiv und nach Schema 'F' (eine sehr wichtige Eigenschaft von Nomenklaturen). Die Methodengruppe wird ein 'Post' machen. Das biete ich für die Parameter 'TGroup' und 'TPage' an. Hmm, wie würden die Methoden dann heißen? Also ich weiß ja nicht, wie locker Du so bist, aber ich verkrampfe hier noch nicht.
Das sieht dann lustig aus, wenn ein Framework ein paar mehr Möglichkeiten hat...
Delphi-Quellcode:
Contents := PostByPostDataFileReturnString(Url, PostDataFileName);
if PostByPostDataStreamSaveInFileReturnSuccess(Url, PostDataStream, ResultFileName) then
  ...
Das nenne ich unsauber.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Overload function

  Alt 21. Nov 2013, 11:17
Ein gewisses Augenmaß sollte man beim Design seiner Methoden nicht verlieren. Ein bekanntes SDK, welches mit langen, sprechenden Methoden-Namen arbeitet, ist z.B. das von iOS - gerade weil ObjectiveC das Überladen gar nicht vorsieht. Geht alles, und gar nicht mal schlecht.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Overload function

  Alt 22. Nov 2013, 06:35
Ein gewisses Augenmaß sollte man beim Design seiner Methoden nicht verlieren. Ein bekanntes SDK, welches mit langen, sprechenden Methoden-Namen arbeitet, ist z.B. das von iOS - gerade weil ObjectiveC das Überladen gar nicht vorsieht. Geht alles, und gar nicht mal schlecht.
Und die WinAPI braucht sich da auch nicht verstecken, man denke da nur an ConvertSecurityDescriptorToStringSecurityDescriptor und Co

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Overload function

  Alt 22. Nov 2013, 06:58
Und die WinAPI braucht sich da auch nicht verstecken, man denke da nur an ConvertSecurityDescriptorToStringSecurityDescriptor und Co
Es ist wohl ein riesen Unterschied, ob ich eine Methode vollständig korrekt benenne, oder Nomenklaturdadaismus à la 'Jänickes Satirekabinett' (Damit ist nur die Überzeichnung von Sebastians Antwort gemeint) veranstalte. Was wäre Dir denn lieber?
'CnvScDsc2StrScDsc'?

Hingegen für 50 Varianten 50 unterschiedliche, sinnvolle Namen zu herzuleiten stelle ich mir unübersichtlicher vor. Wie würde bei deinem Beispiel guter Vorschlag aussehen?
Korrekt und im Sinne von Clean-Code sauber wäre die Einführung einer Parameter-Klasse und eine einzige Methode:
AddControl (Property, LayoutParams); Dann ist es aber Essig mit 'schnell ein Layout zusammentippen', denn
Delphi-Quellcode:
//statt
AddControl(MyProperty,'Name',50);
//
// schreibt man nun
//
LayoutParams := TLayoutParams.Create;
LayoutParams.Label :='Name';
LayoutParams.Width := 50;
AddControl (MyProperty,LayoutParams);
Klar, sauber, einfach. Und umständlich(er). Imho auch leichter zu testen (das wäre aber zu beweisen).

Man muss sich einfach mal dran gewöhnen (imho), das gute Softwareentwicklung mit Dahingeschreibsel (aka Bequemlichkeit) nicht mehr viel zu tun haben kann. Es kommt nur noch auf Testbarkeit, sauberes Design, klare Strukturen usw. an. Bequemlichkeit hat da keinen Platz mehr.

Gestern hat man eine Klasse in 1 Stunde erstellt. Heute dauert das 2-3 Stunden, weil die Unittests noch geschrieben werden müssen und man CC einhalten muss/sollte.

Wir räumen gerade ein Schrottprojekt auf und bei jedem Bugfix (5 Minuten) folgt Refactoring (2-4 Std), Unittests (2 Std) und Schreibkram (0.5 - 1 Std). Hobbyprogrammierer müssen das natürlich nicht so machen.

Das werden hier nun mal immer Grundsatzdiskussionen.
Bei denen sich komischerweise immer die selben Mitglieder beteiligen.
Unter denen sich eben auch Softwarearchitekten befinden. Oder einfach nur Programmierer, die ein Interesse an Fundamentalem haben, weil sie über den Tellerrand blicken. Beteilige dich doch einfach daran.

Geändert von Furtbichler (22. Nov 2013 um 07:01 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.875 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Overload function

  Alt 22. Nov 2013, 07:05
Zitat:
Zitat von mkinzler:
Zitat von Furtbichler:
Das werden hier nun mal immer Grundsatzdiskussionen.
Bei denen sich komischerweise immer die selben Mitglieder beteiligen.
Unter denen sich eben auch Softwarearchitekten befinden. Oder einfach nur Programmierer, die ein Interesse an Fundamentalem haben, weil sie über den Tellerrand blicken. Beteilige dich doch einfach daran.
Dafür kann man geren einen eigene Thread eröffnen, aber nicht ständig andere Threads kapern
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.961 Beiträge
 
Delphi 12 Athens
 
#6

AW: Overload function

  Alt 22. Nov 2013, 09:01
Es ist wohl ein riesen Unterschied, ob ich eine Methode vollständig korrekt benenne, oder Nomenklaturdadaismus à la 'Jänickes Satirekabinett' (Damit ist nur die Überzeichnung von Sebastians Antwort gemeint) veranstalte.
Das war natürlich auch auf das Beispiel bezogen übertrieben gemeint. Bei umfangreicheren Funktionen läuft es aber trotzdem auf ähnliche Monsterbezeichner heraus.

Dann ist es aber Essig mit 'schnell ein Layout zusammentippen', denn
Delphi-Quellcode:
//statt
AddControl(MyProperty,'Name',50);
//
// schreibt man nun
//
LayoutParams := TLayoutParams.Create;
LayoutParams.Label :='Name';
LayoutParams.Width := 50;
AddControl (MyProperty,LayoutParams);
Klar, sauber, einfach. Und umständlich(er).
Das nutzen wir auch so an einigen Stellen, auch mit Interfaces als Parameterinformation, wenn es sonst zu viele Parameter würden.

Man sieht dann besser welche Parameter eigentlich was machen. Bei guten Variablennamen sollte das ohnehin nicht so ein Problem sein, aber wenn das ein paar mehr Parameter sind, reicht das nicht mehr immer.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#7

AW: Overload function

  Alt 22. Nov 2013, 10:50
Dann ist es aber Essig mit 'schnell ein Layout zusammentippen', denn
Delphi-Quellcode:
//statt
AddControl(MyProperty,'Name',50);
//
// schreibt man nun
//
LayoutParams := TLayoutParams.Create;
LayoutParams.Label :='Name';
LayoutParams.Width := 50;
AddControl (MyProperty,LayoutParams);
Klar, sauber, einfach. Und umständlich(er).
Guter Vorschlag. Mit Builder-Pattern wird das ganze sogar weniger umständlich (keine zusätzliche Variable) und leserlicher:
Code:
addControl(myProperty, LayoutParams.newBuilder()
  .setLabel('Name')
  .setWidth(50)
  .build());
Man muss sich einfach mal dran gewöhnen (imho), das gute Softwareentwicklung mit Dahingeschreibsel (aka Bequemlichkeit) nicht mehr viel zu tun haben kann. Es kommt nur noch auf Testbarkeit, sauberes Design, klare Strukturen usw. an. Bequemlichkeit hat da keinen Platz mehr.
Es kommt draufan. Oft bringen sauberes Design und klare Strukturen auch bequemeres Coden und Testbarkeit - entsprechend fördert der Wunsch nach bequemen Coden auch sauberes Design und klarere Strukturen, und damit Testbarkeit. Also schließen sie sich nicht aus, Bequemlichkeit sollte nur nicht das Argument sein.
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#8

AW: Overload function

  Alt 22. Nov 2013, 11:29
Es kommt drauf an. Oft bringen ...
Stimmt, meine Aussage war zu allgemein. Sie trifft in erster Linie auf die Overload-Thematik zu.
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Overload function

  Alt 23. Nov 2013, 08:23
Und die WinAPI braucht sich da auch nicht verstecken, man denke da nur an ConvertSecurityDescriptorToStringSecurityDescriptor und Co
Es ist wohl ein riesen Unterschied, ob ich eine Methode vollständig korrekt benenne, oder Nomenklaturdadaismus à la 'Jänickes Satirekabinett' (Damit ist nur die Überzeichnung von Sebastians Antwort gemeint) veranstalte. Was wäre Dir denn lieber?
'CnvScDsc2StrScDsc'?
Wo hab ich gesagt, dass mir eine kürzere Form lieber wäre? Mir ging es nur darum zu zeigen, dass auch eine C-basierte API (im Gegensatz zu einer objektorientierten API) wie die WinAPI durchaus auch lange, sprechende Namen haben kann und durchaus auch hat.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: Overload function

  Alt 23. Nov 2013, 08:52
Wo hab ich gesagt, dass mir eine kürzere Form lieber wäre? Mir ging es nur darum zu zeigen, dass auch eine C-basierte API (im Gegensatz zu einer objektorientierten API) wie die WinAPI durchaus auch lange, sprechende Namen haben kann und durchaus auch hat.
Dann war es ein Mißverständnis.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz