08 June 2008

C# 3.0 та зрозумілість коду?

В C# 3.0 багато прикольних фішок. Але ось деякі мене дивують. Наприклад, var.

var test = Something.CreateSomethig();

Ми самостійно вбиваємо зрозумілість! Якщо не буде тултіпа який підкаже що там за тип, то ми можемо пропустити помилку! Приклад таких помилок.

var сustomers = new CusomerRepository().MatchCastomers(new AllSpecification());

сustomers.Where(c => c.Name.Equals(“Dude”));

На початку MatchCastomers повертає IQueryable<T>, Where буде зроблено на боці сервера. Через деякий час нуб змінив MatchCastomers так що він повертає IEnumerable<T>. Все компілюється! Але тепер Where працює на клієнті! Але при читанні коду цього ніяк не викупиш!

Якщо буде бажання, кажіть наведу ще декілька прикладів.

Висновок

Налаштування ReSharper. Усі параметри що вказують на використання var вимкнені.

Але одночасно є і фішки які навпаки її збільшують.

Наприклад, Object Initailizer. Порівняйте

return new ConnectionField
{
    ListFieldId = "Something",
    SourceFieldId = "Something #2"
};

чи

return new ConnectionField("Something", "Something #2");

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

Невеличкий додаток. Потрібно розуміти що варіант з коструктором дозволяє робити схеми де створенний об’єкт буде одразу валідним. Для порівняння з Object Initailizer можна на встановити ListFieldId і якщо код не перевірить його (помилкові очікування) то буде NullReferenceException.

Висновок

Варіант з Object Initailizer потрібно(можна) використовувати для DTO, для необов’язкових властивостей, тощо.

Варіант з конструктором, для обов’язкових власитвостей.

 

Коментарі

# mormat said:

На тему варіфікації є цікава нотатка, ось тут http://resharper.blogspot.com/2008/03/varification-using-implicitly-typed.html

Можливо буде у пригоді.

08 June 08 at 11:08 AM
# Mike Chaliy said:

2mormat, дякую за коментр, я це вже читав.

08 June 08 at 2:35 PM
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.

About Mike Chaliy

Вчу українську, багато працюю. Цікавлюсь моделюванням небезпек. Більшість часу витрачаю на .Net.