Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопросы к программистам

ястреб ворон Мыслитель (7468), на голосовании 10 часов назад
Читай книгу сейчас ЧИСТЫЙ КОД СОЗДАНИЕ АНАЛИЗ И РЕФАКТРРИНГ.
Там сказано:
  1. Во вложенных структурах if, else, while должен быть один блок вызова функции.
  2. Желательно чтобы функция не была больше 20 строк.
  3. Функции должны быть на одном уровне абстракции.
  4. Отказ от дублирования кода.
  5. Ещë показано что каждую строка в switch должна работать как фабрика и возвращать объект.
И у меня появились пару вопросов.
1) Если у нас много классов и всем им нужны несколько посстоянных переменных по типу screenHeight,screenWidth то мы должны создать один класс, а в остальных классах мы должны наследоваться от него?? А если мы уже наследовались от другого класса, то мы же не можем.
В таком случае как быть??
2) Если используется Фреймворк по типу Flutter или Jetpack Compose для визуального эффекта, то в компаниях виджеты помещают в фабрики?? Помещают ли из в разные классы??
Голосование за лучший ответ
[ ] [ ] Мастер (1178) 1 месяц назад
1. Иногда бизнес требует что-то и этому что-то отказать нельзя, тогда некоторые вещи по типу "в функции не должно быть больше 20 строк" отлетает к чертям собачьим. Если у меня фильтрация по 20 полям я не буду тр@xать себе мозг и считать сколько у меня строк уйдет на количество строк в функции.
2. Множественное наследование в c# запрещено, но это касается только классов, с интерфейсами хоть 10, хоть 50 (но тогда надо задуматься почему у тебя наследование от 50 интерфейсов))) )

Да и может я хочу в switch функцию вызывать, а не объект возвращать?

Эта книга не эталон программирования, но полезное в ней тоже есть. Не повторять один и тот же код, например
Андрей Высший разум (460550) 1 месяц назад
Если у нас много классов и всем им нужны несколько постоянных переменных по типу screenHeight,screenWidth то мы должны создать один класс, а в остальных классах мы должны наследоваться от него??
А ты уверен, что в этих классах нужны именно поля? Почему бы не создать отдельный объект класса Screen и не передавать уже созданный объект во все эти классы в качестве параметра конструктора (инверсия зависимостей)? А уже этот объект Screen определяет всё то, что непосредственно связано со screen. И множество полей, и часть общего функционала переедут в один этот объект (и единственное поле).

Ты сумел прочитать Мартина??? Я его "Чистую архитектуру" не осилил: постоянные повторы одного и того же по десять раз, будто дебилам объясняет. Жалко тратить время на выискивание крупиц полезной информации в потоке воды.

P.S. 20 строк на функцию - это исключительно вкусовщина Мартина. Например, хорошим тоном является использование {}, даже если тело if или while состоит из единственного оператора. А это - при соблюдении Code Style - автоматически удлиняет функцию.

Размер функции должен быть удобен для её чтения. Да, хорошо, если код функции целиком помещается на экране. Но у меня в IDE область редактирования кода - 33 строки, а не 20. Времена текстовых дисплеев и консольных редакторов, в которых как раз примерно 20 строк под область редактирования и было, давно прошли.
Похожие вопросы