Щоб зробити це питання відповідальним, припустимо, що вартість неоднозначності на увазі програміста значно дорожча, ніж кілька додаткових натискань клавіш.
З огляду на це, чому я б дозволив своїм товаришам по команді піти, не зазначаючи параметри своїх функцій? Візьміть такий приклад як приклад того, що може бути набагато складнішим кодом:
let foo x y = x + y
Тепер швидкий огляд підказки покаже вам, що F # визначив, що ви призначені для x та y як ints. Якщо це те, що ви задумали, то все добре. Але я не знаю, чи це ви мали намір. Що робити, якщо ви створили цей код для об'єднання двох рядків разом? Або що робити, якщо я думаю, що ви, мабуть, мали намір додати пар? Або що робити, якщо мені просто не потрібно наводити курсор миші на кожен параметр функції, щоб визначити його тип?
Тепер візьмемо це як приклад:
let foo x y = "result: " + x + y
F # тепер передбачає, що ви, ймовірно, мали на меті об'єднати рядки, тому x і y визначаються як рядки. Однак, як поганий чмока, який підтримує ваш код, я можу поглянути на це і поцікавитися, чи, можливо, ви мали намір додати x та y (ints) разом, а потім додати результат до рядка для цілей інтерфейсу.
Безумовно, для таких простих прикладів можна відпустити це, але чому б не застосувати політику явного анотації типу?
let foo (x:string) (y:string) = "result: " + x + y
Яка шкода в тому, що бути однозначним? Звичайно, програміст міг вибрати неправильні типи для того, що вони намагаються зробити, але, принаймні, я знаю, що вони це задумали, що це був не просто недогляд.
Це серйозне питання ... Я все ще дуже новачок у F # і викриваю сліди для своєї компанії. Стандарти, які я приймаю, ймовірно, будуть основою для всіх майбутніх кодування F #, вбудованих у нескінченне копіювання, яке, я впевнений, буде пронизувати культуру на довгі роки.
Отже ... чи є щось особливе у висновку про тип F #, що робить його цінною особливістю дотримуватися, коментуючи лише в разі потреби? Або експерт F # -ers звик коментувати свої параметри для нетривіальних додатків?