Классификация кода | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
В теме "Хранение разного набора атрибутов в виде битовой маски" сказано:
Возникает вопрос - а что же такое "идеальный код"? И, всякий ли не идеальный код называется Г-кодом? |
Re: Классификация кода | |
---|---|
Vedmak Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
Зависит от шкалы оценки.
В качестве бреда процитирую классику: "кому и кобыла невеста". ------------------ Говорить стоит лишь для тех, кто слушает. |
Re: Классификация кода | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
1) Всякий написанный код неидеален.
2) "Идеальный код" - это цель, она, как горизонт, недостижима - но стремиться к этому надо 3) Г*нокод это тоже в принципе абстрактный термин - нет "абсолютно г*венного" кода. Это просто обратная сторона шкалы качества. Любой реальный код находится где-то между этими понятиями. 4) Если в коде есть серьёзные проблемы, и это очевидно. Или если можно не долго думая предложить гораздо лучший вариант, то я считаю вполне логичным назвать соответствующий код г*ном ------------------ WBR, Igor |
Re: Классификация кода | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
А что значить "есть серьёзные проблемы"? Какие проблемы можно считать несерьёзными? Опять таки, лучший вариант всегда можно предложить, но всегда есть затраты на его реализацию. |
Re: Классификация кода | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Порассуждаем в слух. Программа пишется одними людьми (программистами) для других людей. Другие люди это пользователи, которые будут программу использовать, и другие программисты, которые будут программу "допиливать". Чем может не нравиться программа пользователям (исключая интерфейс)?
Медленная программа (на нормальном железе) - это когда выбран неправильный алгоритм. Примеры: программа тянет все данные с сервера, а потом в клиенте в цикле из обрабатывает (вместо того, что бы добавить в запрос where). Или, программа делает сто запросов к серверу, вместо одного. Предположим, внутри программы всё красиво. Этот случай к Г-коду относится? Глючная программа - периодически вылет. Например, из за утечки памяти, длинной строки в каком то поле, встреченного "некорректного символа" (в иной кодировке) и пр. А этот случай к Г-коду относится? Исправлено 1 раз(а). Последнее : S-type, 03.09.17 20:44 |
Re: Классификация кода | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Или, фраза "в коде есть серьёзные проблемы" это только про программистов? Как говорил мой преподаватель - что бы программа работала, код должен быть красивым. Конечно, это не означает, что красивый код всегда работает правильно. А какой код можно считать красивым? Красота - вещь субъективная.
Для начала - правильно отформатировано. Например, правильные отступы. IDE уже давно эту проблему решили. Даже на этом этапе возможны расхождения во взглядах (количество пробелов отступа). Можно поставить какую нибудь плагин для рефакторинга, и он будет подсказывать: Да, после внесения этих изменений код вроде как приблизится к идеальному. Вот только будет ли он надёжнее? Сомневаюсь. Как глядя на код увидеть, что "есть серьёзные проблемы"? |
Re: Классификация кода | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Значит что сам разработчик знает в каком ШТАТНОМ случае работы его программы будет косяк, или коллега ему явно на это указывает. На форуме 100500 раз это встречается. Ну, например, неуникальность генерации GUID, если дополнительно соответствующий ключ защищён констрейном уникальности. Т.е. мы знаем что проблема имеется, но во-первых вероятность её встретить ничтожно мала, а во-вторых мы даже на этот случай предусмотрели хоть какую-то "защиту". Если его МОЖНО предложить (т.е. по сути ты ЗНАЕШЬ как написать лучше), то, наверное, он не так уж и затратен в реализации. Вот если ты лишь ПРЕДПОЛАГАЕШЬ что лучший вариант есть, но для его поиска тебе надо думать 33 года и 3 месяца не слазя с печи - вот это уже совершенно точно будут неприемлемые затраты. Повторюсь в сотый раз - из всего времени работы программиста, "набивание текста программы" занимает ничтожную часть времени - я, конечно, не занимался такими измерениями, но вот так "с потолка" предположу что для "крепкого среднего" программиста это будет порядка 5% времени, а для высококлассного менее 1%. Потому делать упор на то что "тут надо с час подумать, а там можно сразу тыкать кнопки" будет некорректно. Вспомни народную мудрость - "Семь раз отмерь, один - отрежь". "Поспешишь - людей насмешишь". Да, эти внешне заметные проявления - явный признак г*нокода. Естественно это не единственные признаки.
Даже тупая машина в лице всяких решарперов или утилит подсчёта "метрик кода" может сказать когда код явно плохой (и даже порой подсказывает как его улучшить). Специалист-человек в принципе лишь взглянув на код (не углубляясь особо в его логику/семантику) тоже может вынести свой вердикт. "Форматирование" к этому не относится по большому счёту, т.к. это процесс "механический" (к сожалению для фоксового редактора автоформатировщик очень слаб, те же здоровенные SQL запросы он "красиво" отформатировать не сможет, увы). А вот то же использование public/private переменных в фоксе, или "километровые" размеры процедур/методов, или безумная смесь совершенно разных по смыслу методов в одном классе, или copy-paste подход к написанию кода... В общем есть масса таких "меточек", увидев которые можно сказать - "с этим кодом что-то не так". Или, если их число зашкаливает, прямо заявить о том что код - г*но. Конечно будет. Во-первых он скорее всего упростится (основная "цель" программных кодоулучшателей - сокращение числа взаимосвязей, прежде всего неявных, между разными кусками кода. Меньше "точек пересечения" - меньше потенциальных ошибок - лучше общее "качество кода"), во-вторых он станет понятнее потенциальному "наследнику" - тому кому придётся потом этот код дописывать - а значит шанс того что тот бедолага "не просечёт фишку и накосячит" сильно сократится. ------------------ WBR, Igor |
Re: Классификация кода | |
---|---|
Foxtrot Сообщений: 3408 Откуда: Куда: Дата регистрации: 25.04.2003 |
развели тут... курилку
------------------ Мойте ноги, моя ноги вы моете и руки |
Re: Классификация кода | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Ну, почему же курилку? Тут вопрос о программировании, а не о море/отдыхе/водке/
Исправлено 1 раз(а). Последнее : S-type, 04.09.17 12:40 |
Re: Классификация кода | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете». Steven C. McConnell
------------------ |
Re: Классификация кода | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
|
Re: Классификация кода | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
В книжке "Чистый код" Роберта Мартина сказано:
Определение понятное, но к точным его не отнесёшь. |
Re: Классификация кода | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
На docs.microsoft.com есть пример:
Можно ведь так записать:
Вопрос - можно ли верхний пример назвать г-кодом? |
Re: Классификация кода | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Вероятно этот код писался ДО того как в стандарт языка был введен null-conditional оператор ?.
И на то время он был вполне адекватен. Впрочем, по логике он НЕ является г*нокодом и сейчас, просто немного более избыточен (по сути оператор ?. именно такую проверку и делает). Но его несомненный плюс в том, что он совместим со старыми версиями компилятора, в отличие от "нового синтаксиса". Думаю что не открою большого секрета, но БОЛЬШИНСТВО проектов в мире пишутся не на "вчера выпущенном", и даже не на "прошлогоднем" компиляторе/IDE/стандарте языке. Хорошо если они хотя-бы на 4-м фреймворке будут основаны, а тебе не запретят явно использовать VS 2017 (со всеми её е***ыми апдейтами) т.к. "корпоративный стандарт" основан на 2015 или вообще на 2008 версии студии ------------------ WBR, Igor |
Re: Классификация кода | |
---|---|
Vedmak Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
Со всем уважением к Igor Korolyov я добавлю и свои "5 копеек". В примере разница не техническая, а концептуальная. Первый пример "для людей", а второй "для себя". Поясню акОдемическое: "самоуверенность" присуща человеку, программеры наследуют этот "ген" от предков которые "ЭВМ поднимали...", т.е. их учили в ВУЗ-ах и т.д. ..... тут я написал много слов.. и потом подумал, кому этот текст?... ------------------ Говорить стоит лишь для тех, кто слушает. |
Re: Классификация кода | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Почему второй написан "для себя"? Разве глядя на него не понятно - что он делает? Опять таки, даже если подумать, что "?." ещё не изобрели, я бы переписал код так:
Так и короче, и смысл не теряется. |
Re: Классификация кода | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Есть такой шаблон/приём/подход - минимизация "точек выхода" из метода. У тебя 2 точки, в их примере - только одна. Да, для кода на 3 строки это не существенно (т.к. всегда видно и один и второй return) но если строк побольше, то у такого шаблона есть свои плюсы... Можно и по поводу комментариев придраться - они тут малополезны, т.к. и так вполне очевидно что делает код. Ещё бы и к return прописали коммент Ну, если подразумевать под "людьми" малограмотных "индусов/китайцев" то да, соглашусь. Только им и так понятнее не станет, и этак не хуже будет В общем я бы не стал (писать код "как для даунов"). Разве что это принятый в компании "стандарт", и я его вынужден соблюдать. Многобуквие в коде так же плохо как и в жизни ------------------ WBR, Igor |
Re: Классификация кода | |
---|---|
Божья_коровка Сообщений: 25731 Дата регистрации: 23.08.2001 |
Ты улыбаешься, а я встречала код в котором к каждой его строчке был написан комментарий. Я и целые сочинения читала...Но видела и такие, где вообще не строчки комментария не было. Как найти оптимальный вариант? Ага, а краткость, сестра таланта? ------------------ Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается... |
Re: Классификация кода | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
И мачеха гонорара. |
Re: Классификация кода | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Потому прибалтийский коллега и против однострочного решения Есть такое мнение, что если код нуждается в комментариях, то он плохой. Код должен быть настолько очевидным, чтобы быть понятным и безо всяких комментариев. Конечно же это идеал, к которому стоит стремиться, но вряд ли можно достичь... ------------------ WBR, Igor |
© 2000-2024 Fox Club  |