История изменений
Исправление
stevejobs,
(текущая версия)
:
Идти на день рождения надо, я уже собрался и делать нечего, поэтому пофлужу немного :)
Кому должен?
Чистому коду должен
Если бы не засилье слова «бизнес»
«бизнес» - это прошло от разделения на типовые слои. Иногда перебарщиваю :( Уровень представления, бизнес-логики, модельных сущностей, системы хранения, итп. Ну, в зависимости от типа архитектуры
когда смотришь на приложение в первый раз, надо понять архитектурную карту. Какая используется архитектура, какие классы к какому уровню относятся, как организованы уровни, какие связи установлены итп
поэтому например, ясно видно что там есть уровень интерфейсов до вызывающего апи (интероп до ядра написанного как раз на Си), а есть уровень бизнес-логики самого плагина. Есть модельная сущность «шрифт», есть модельная сущность «источник текста» (так собственно называется сам плагин), есть бизнес-логика отрисовки.
И автор соответственно должен показать по коду, и описать словами: глядите, вот здесь я интероплюсь с вызывающим апи на Си, и поскольку это Си то это внеклассовая функция. Но при этом плагин у меня ТекстСорс, а основное свойство текста - шрифт, и значит модели у меня организованы вот так
смотря на этот код я не вижу с первого взгляда его карту, всё намешано как попало. Свалка.
Если бы это было написано на Java, я бы отправил такой пул-риквест на доработку. Все сущности надо раскидать по разным файлам. Одна сущность в предметной области - одна сущность в коде. Должна быть ясно понятна организация, связи явным способом обозначены.
На самом деле, благодаря вам, я уже столько раз за сегодня смотрел на этот файл, что сейчас могу пойти и переписать всё это правильно. Может так и сделаю, если вернусь с днюхи не нажратный в говно
В данном случае, разбиение на подфункции только увеличит объем кода.
Вкусовщина. Разбиение только увеличит код.
так понятно что почти любое улучшение архитектуры в ООП языках увеличивает количество кода. Это цена за получение чистого, понятного кому угодно, хорошо модифицируемого («сделать сто фич до вечера»), поддерживаемого веками кода
Свичи вместо параметризованных стратегий
Шта? Java головного мозга.
GOF между прочим именно про C++ книжку написали, не про джаву :)))
Отсутствие неймспейса
Отсутствие главного класса
Шта? Какого? Зачем?
Нужно четкое деление по зонам видимости, чтобы предотвратить клеши имен и упаси боже - клеши способов использования, при разрастании кода. Пока у тебя код из трех строчек - всё в порядке, как только там будет сто тысяч классов, с таким подходом - тебе капец. Чтобы прожить как можно дольше, нужна специальная дисциплина кодирования. Любой кусок кода должен иметь свой четко понятный «адрес» внутри кода, ни с чем не пересекающийся
Утилиты должны быть в классе Utils
Кому должны?
Мы живем в C++, значит в мире ООП. А utils-методы - это по хорошему ФП, но нормального ФП организовать тоже не получится - слишком много кода выйдет. Потому в ООП языках есть стандартный стиль кодирования, когда все эти утилиты заключаются в Utils классы (или отдельные неймспейсы, или еще что-то такое).
Перегрузка операторов, там где можно обойтись вызовом метода
В джаву не завезли, вот и завидуете?
В скалу завезли. Всё равно пользуемся как можно меньше
Уродливый do while (false) с куском ифа
Вкусовщина.
Говномакрос-утилита в самом начале файла - вкусовщина? Фига се у тебя вкусы
man coding style. В Qt тоже пропускают, и ничего.
идиоты, сэр
Чудные
color
А что не так?
Не color, а color1, color2. А потом будут еще color3 и color4. Таким макаром можно совсем долбануться и называть переменны a,b,c,d. Ну, чтобы совсем уже никто не догадался, что всё это означает
Там, где это используется, типичный сишный код. Он всегда такой кривой.
Думаешь, на си нельзя хорошо красиво писать?
Исходная версия
stevejobs,
:
Идти на день рождения надо, я уже собрался и делать нечего, поэтому пофлужу немного :)
Кому должен?
Чистому коду должен
Если бы не засилье слова «бизнес»
«бизнес» - это прошло от разделения на типовые слои. Иногда перебарщиваю :( Уровень представления, бизнес-логики, модельных сущностей, системы хранения, итп. Ну, в зависимости от типа архитектуры
когда смотришь на приложение в первый раз, надо понять архитектурную карту. Какая используется архитектура, какие классы к какому уровню относятся, как организованы уровни, какие связи установлены итп
поэтому например, ясно видно что там есть уровень интерфейсов до вызывающего апи (интероп до ядра написанного как раз на Си), а есть уровень бизнес-логики самого плагина. Есть модельная сущность «шрифт», есть модельная сущность «источник текста» (так собственно называется сам плагин), есть бизнес-логика отрисовки.
смотря на этот код я не вижу с первого взгляда его карту, всё намешано как попало. Свалка.
Если бы это было написано на Java, я бы отправил такой пул-риквест на доработку. Все сущности надо раскидать по разным файлам. Одна сущность в предметной области - одна сущность в коде. Должна быть ясно понятна организация, связи явным способом обозначены.
На самом деле, благодаря вам, я уже столько раз за сегодня смотрел на этот файл, что сейчас могу пойти и переписать всё это правильно. Может так и сделаю, если вернусь с днюхи не нажратный в говно
В данном случае, разбиение на подфункции только увеличит объем кода.
Вкусовщина. Разбиение только увеличит код.
так понятно что почти любое улучшение архитектуры в ООП языках увеличивает количество кода. Это цена за получение чистого, понятного кому угодно, хорошо модифицируемого («сделать сто фич до вечера»), поддерживаемого веками кода
Свичи вместо параметризованных стратегий
Шта? Java головного мозга.
GOF между прочим именно про C++ книжку написали, не про джаву :)))
Отсутствие неймспейса
Отсутствие главного класса
Шта? Какого? Зачем?
Нужно четкое деление по зонам видимости, чтобы предотвратить клеши имен и упаси боже - клеши способов использования, при разрастании кода. Пока у тебя код из трех строчек - всё в порядке, как только там будет сто тысяч классов, с таким подходом - тебе капец. Чтобы прожить как можно дольше, нужна специальная дисциплина кодирования. Любой кусок кода должен иметь свой четко понятный «адрес» внутри кода, ни с чем не пересекающийся
Утилиты должны быть в классе Utils
Кому должны?
Мы живем в C++, значит в мире ООП. А utils-методы - это по хорошему ФП, но нормального ФП организовать тоже не получится - слишком много кода выйдет. Потому в ООП языках есть стандартный стиль кодирования, когда все эти утилиты заключаются в Utils классы (или отдельные неймспейсы, или еще что-то такое).
Перегрузка операторов, там где можно обойтись вызовом метода
В джаву не завезли, вот и завидуете?
В скалу завезли. Всё равно пользуемся как можно меньше
Уродливый do while (false) с куском ифа
Вкусовщина.
Говномакрос-утилита в самом начале файла - вкусовщина? Фига се у тебя вкусы
man coding style. В Qt тоже пропускают, и ничего.
идиоты, сэр
Чудные
color
А что не так?
Не color, а color1, color2. А потом будут еще color3 и color4. Таким макаром можно совсем долбануться и называть переменны a,b,c,d. Ну, чтобы совсем уже никто не догадался, что всё это означает
Там, где это используется, типичный сишный код. Он всегда такой кривой.
Думаешь, на си нельзя хорошо красиво писать?