Re[11]: Пригласите меня к себе на собеседование!
От: mgu  
Дата: 29.04.18 01:26
Оценка: +1
Здравствуйте, AlexGin, Вы писали:

mgu>>Control-чпок в модных IDE обычно решает проблему.

AG>А удачный стиль программирования её вообще исключает: пиши себе код — хоть в студии, хоть в блокноте

Да, со смартфона. Только хардкор.

mgu>>А за методы, превышающие по размеру 2 экрана, во времена моей программистской молодости били в коридоре ногами. И строк на экране тогда было мало.

AG>Это очень хорошо, для студенческих разработок. В объемных же проектах, иногда бывает так, что дробление метода на несколько кусков-методов
AG>(при этом — каждый из которых применяется только в одном месте) может существенно затруднить чтение кода.

Ну да, выбор размера метода -- это тоже искусство. В противоположность обезьянничанию по лекалам.

mgu>>Проблема же, на мой взгляд, в другом -- в начале функции инициализируются переменные,

AG>Почему же это не делать именно там, где каждая из них реально требуется?

Я только "за".

mgu>>затем идут проверки, после которых наши переменные могут и не понадобиться.

AG>Это только свидетельствует о непродуманном дизайне Вашего API, а возможно и всей архитектуры проекта

AG>P.S. Все проверки — IMHO должны быть выделены в отдельный метод/методы (или даже класс).

AG>Обычно — это делается на уровне GUI приложения — чтобы в случае чего, показать user-у где и в чем он ошибся.
AG>Все расчеты, вычисления, обработка данных и т.д. — происходят в отдельном от GUI объекте,
AG>специально разработанного для этой цели класса (класса реализации бизнесс-логики либо вычислительного ядра).

Ох, не били вас в молодости ногами... Проверки должны быть и в гуях, и на принимающей стороне. Тем более, что данные могут приходить не только от морды. Да даже в частной функции -- открываем файл, а его уже умыкнули...

AG>Класс бизнесс-логики/ядра иногда удобно наследовать от интерфейса (aka абстрактный базовый класс в терминологии C++).

AG>Тогда можно применять указатель именно на базовый интерфейс Вашего класса, а не на объект класса. Это реализация паттерна "Стратегия".

Спасибо, мне уже доложили. (с) Брежнев.

AG>Такой подход позволяет:

AG>1) Отделить GUI от бизнес-логики — что значительно упростит чтение и понимание Вашего кода коллегами;
AG>2) При необходимости — проще переходить на другие GUI-фреймворки (если такое потребуется);
AG>3) Если потребуется менять алгоритмы бизнес-логики (вычислительного ядра) — то не нужно будет "сражаться" с переделкой GUI.

В моей вселенной обычно гуисты и разработчики промежности даже не догадываются о существовании друг друга.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.