Um diese Frage beantworten zu können, nehmen wir an, dass die Mehrdeutigkeit eines Programmierers viel teurer ist als ein paar zusätzliche Tastenanschläge.
Warum sollte ich meinen Teamkollegen gestatten, ihre Funktionsparameter nicht zu kommentieren? Nehmen Sie den folgenden Code als Beispiel für einen weitaus komplexeren Code:
let foo x y = x + y
Eine kurze Betrachtung des Tooltips zeigt Ihnen nun, dass Sie mit F # festgelegt haben, dass x und y Ints sein sollen. Wenn Sie das beabsichtigt haben, ist alles in Ordnung. Aber ich weiß nicht, ob Sie das beabsichtigt haben. Was wäre, wenn Sie diesen Code erstellt hätten, um zwei Zeichenfolgen miteinander zu verknüpfen? Oder was ist, wenn ich denke, dass Sie wahrscheinlich Doppel hinzufügen wollten? Oder was ist, wenn ich nicht mit der Maus über jeden einzelnen Funktionsparameter fahren möchte, um dessen Typ zu bestimmen?
Nun nimm dies als Beispiel:
let foo x y = "result: " + x + y
F # geht nun davon aus, dass Sie wahrscheinlich beabsichtigt haben, Zeichenfolgen zu verketten. Daher werden x und y als Zeichenfolgen definiert. Als der arme Trottel, der Ihren Code verwaltet, könnte ich mir das ansehen und fragen, ob Sie vielleicht beabsichtigt haben, x und y (ints) zusammenzufügen und das Ergebnis dann zu UI-Zwecken an einen String anzuhängen.
Für solch einfache Beispiele könnte man es sicherlich loslassen, aber warum nicht eine Richtlinie mit expliziten Typanmerkungen erzwingen?
let foo (x:string) (y:string) = "result: " + x + y
Was schadet es, eindeutig zu sein? Sicher, ein Programmierer könnte die falschen Typen für das auswählen, was er versucht, aber zumindest weiß ich, dass sie es beabsichtigt haben, dass es nicht nur ein Versehen war.
Dies ist eine ernste Frage ... Ich bin noch sehr neu in F # und ebne den Weg für meine Firma. Die Standards, die ich übernehme, werden wahrscheinlich die Grundlage für die gesamte zukünftige F # -Codierung sein, eingebettet in das endlose Kopieren, von dem ich sicher bin, dass es die Kultur für die kommenden Jahre durchdringen wird.
Also ... gibt es etwas Besonderes an der Typinferenz von F #, das es zu einer wertvollen Funktion macht, sie beizubehalten und nur dann zu kommentieren, wenn es nötig ist? Oder machen es sich Experten zur Gewohnheit, ihre Parameter für nicht-triviale Anwendungen zu kommentieren?