Я починаю розуміти, що розробка програмного забезпечення - це (серед інших) процес постійного задавання собі питань. Питання щодо якості коду, розділення проблем, мінімізації залежностей, ...
Але головне питання: як далеко ви можете пройти, не закінчившись у психіатричній лікарні?
Я подаю заявку на нову роботу. Вчора я був з можливим майбутнім роботодавцем, який хотів перевірити свої можливості програмування. Однією з вправ було: поясніть, що робить цей код. Я переглянув якийсь код програми (winforms на vb.net), який вони розробляють (це адміністративна програма для лікарні). Це дало мені можливість реально побачити, як вони підходять до речей, і це було дуже невтішно.
Деякі приклади:
- Я десь побачив: зателефонуйте [тут вставте ім'я підпрограми] -> мене вразило: чи це щось із VB6?
- У них є окремий рівень даних, використовуючи ado.net, але один метод, який мені довелося вивчити, повертає набір даних до викликового рівня. Отож, окремий рівень даних чи ні, додаток прив’язаний до ado.net (що також ніколи не може бути проблемою, якщо вони ніколи не переходять на інший підхід до доступу до даних).
- Цей набір даних читається як є, тому це все ще є орієнтованим на дані підхід (звичайно, можна стверджувати, скільки логіки / поведінки ви можете вкласти в класи типу "Пацієнт" або "LabAnalysisRequest".
- Я також вважаю, що бачив побудову запиту sql шляхом об'єднання рядків.
- Вони використовують збережені процедури (що, на мій погляд, означає: розсіювання логіки)
- немає згадок про погляди / контролери: це все керує формою
- Найпотворніше, що я бачив:
Якщо TestEnvironment.IsTesting, то someVar = [якесь жорстке кодове значення] ще someVar = [якесь динамічно отримане значення] закінчується, якщо [залишок функції тут]
Все настільки відрізняється від того, що я дізнався в школі: (стійкість агностика) доменний шар, стійкість шару, презентаційний шар, тестування блоку, ...
Тому я перефразовую своє запитання: наскільки фундаментальним чи догматичним він повинен бути? Якою мірою програміст повинен дотримуватися своїх принципів або просто написати код, який виконує завдання?