Якщо ви використовуєте C # і F # разом


16

Я знаю, що ви можете використовувати C # і F # разом в одному проекті, однак я не впевнений, чи добре це зробити.

Мені здається, що змішування двох дуже різних стилів кодування (функціональний проти OOP) може спричинити відсутність згуртованості в дизайні. Це правильно?


1
Як можна використовувати їх в одному проекті? Ви маєте на увазі те саме рішення?
Брайан Боттчер

2
Не проект Microsoft Definition, а більш загальне визначення
Том Сквайрес

Одним із очевидних недоліків є те, що якщо хоча б частина роботи над проектом вимагає, щоб розробник взаємодів з обома розділами в C # і в F # (навіть просто для їх читання), ці частини вимагатимуть розробника, який володіє обома мовами, і є їх менше, ніж знаючих лише однією мовою, і, отже, їх важче знайти, потенційно дорожчих, і їх менше різноманітності (у цьому конкретному випадку, мабуть, більшість розробників F # мають принаймні деяке ознайомлення з C #) .
gbr

абсолютно. наприклад, поступове введення F # у застаріле рішення C # є коректним сценарієм.
KolA

Відповіді:


23

Немає нічого поганого в змішуванні мов у продукті, якщо ви користуєтесь ними належним чином, і вони разом «грають добре».

Якщо є частина вашого проекту, яку найкраще кодувати за допомогою функціональної мови, то має сенс закодувати її у F #. Аналогічно для C #.

Що було б безглуздо (у кращому випадку) - змішування мов заради цього.


0

Мені здається, що змішування двох дуже різних стилів кодування (функціональний проти OO) може спричинити відсутність згуртованості в дизайні. Це правильно?

Я не думаю, що ви отримаєте "відсутність згуртованості". Кожна мова має сильні та слабкі сторони. Поєднуючи їх під час спільної роботи, ви можете наблизитись до найкращого з обох світів. За допомогою C # і F # ви просто хочете переконатися, що ви використовуєте перетин двох мов на інтерфейсі між двома у вашому рішенні.


0

Так, я згоден з ChrisF . Також C # в даний час вже містить принципи F #, такі як анонімні типи:

var unitanon = new[]
{
    new { Field1="new car", Field2 = 1},
    new { Field1="old car", Field2 = 20} 
};

Однак, я особисто думаю, що це крок назад у читанні коду, хоча це дуже зручно.


2
Анонімні типи насправді не є принципом F #. Можливо, ви маєте на увазі посилання на умови виводу (що робить ключове слово var у C #), завдяки чому компілятор здогадується, про який тип ви звертаєтесь. Це використовується протягом усього F #.
Mongus Pong

1
Я б використовував F # для легких можливостей асинхронізації. Однак, TPL зробив це досить легко зробити це в C # самому. Якби ви вкладали мову для сценаріїв, я б точно використовував F # для розбору цього.
Jetti
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.