Приходилось ли вам когда-либо работать над стандартами кодирования, которые:
- Сильно снизилась ваша производительность?
- Первоначально были включены по уважительным причинам, но были сохранены еще долго после того, как первоначальная проблема стала неактуальной
- Были ли в списке так долго, что было невозможно запомнить их всех?
- Считаете ли вы, что автор просто пытался оставить свой след, а не поощрять хорошую практику кодирования?
- Вы понятия не имели, почему они были включены?
Если да, то какое правило вы предпочитаете меньше всего и почему?
Некоторые примеры здесь
Ответы:
Это может взволновать несколько перьев, но стандарты, которые требуют шаблонных блочных комментариев в верхней части каждого метода, всегда приводят меня к дерьму.
1) Они всегда устарели, поскольку они слишком далеки от кода, который выполняет реальную работу, чтобы замечать, когда вы обновляете вещи. Плохие комментарии хуже, чем отсутствие комментариев.
2) Они часто просто повторяют информацию, которая уже содержится в инструменте контроля версий, просто менее точную. Например: Last Modified by, список даты / причин изменения.
источник
Если бы у нас был профессор, который требовал, чтобы у нас был хотя бы один комментарий для каждой строки кода.
Это было довольно смешно.
источник
// comment
на линию до этого?Наш корпоративный (C #) стандарт кодирования требовал широкого использования #REGION (для тех, кто не знает, он помечает блоки исходного кода, которые будут свернуты в одну строку в Visual Studio). Как следствие, вы всегда открывали то, что казалось хорошо структурированным классом, только для того, чтобы находить груды мусора, попадающие под глубоко вложенные коврики конструкций #REGION. У вас даже были бы области вокруг одной строки, например, вам нужно было бы свернуть область LOG, чтобы найти одну единственную декларацию Logger. Конечно, множество методов, добавленных после того, как был создан какой-то регион, также были помещены в область «неправильного» региона. Ужас. Ужас.
Регионы являются одной из худших функций, когда-либо добавленных в Visual Studio; это поощряет структурирование поверхности, а не фактическую структуру ОО.
В настоящее время я убиваю #REGIONs на месте.
источник
На одной работе мы были вынуждены использовать странную форму венгерской нотации в базе данных.
Я не могу вспомнить детали, но по памяти каждое имя поля должно было содержать:
Например, может называться столбец, содержащий имя человека:
PRSNFRSTNMVC30X
(таблица «Персона», столбец «Имя», 30 символов Varchar, не ноль)источник
Настаивая на том, что за всеми фигурными скобками следует комментарий для определения того, что фигурная скобка заканчивается:
например:
источник
'достаточно.
источник
#define BEGIN {
и#DEFINE END }
?Реальные примеры:
paymentmethodtotalshtml
,contracttypechangecontexts
,customsegmentspectexts
,potentialmsceventref
Нью-Йорк Таймс весит в :
источник
Меня попросили лидера программного обеспечения компании , чтобы сделать « простой, ре н dundant код ». Например, было запрещено добавлять новый параметр в существующую функцию. Вместо этого вам пришлось дублировать функцию, оставив оригинал нетронутым, чтобы избежать регрессий. Без формального тестирования конечно (пустая трата времени).
Нам также было запрещено использовать программное обеспечение слияния; каждый файл может быть изменен только одним программистом одновременно. Конечно, программное обеспечение контроля версий было научной фантастикой.
Самый счастливый день в моей жизни был, когда его уволили (учтите, что очень и очень сложно кого-то уволить в Италии).
источник
Все взаимодействие с базой данных должно осуществляться через хранимые процедуры . Это может иметь смысл, если мы живем в 1997 году, а не в 2010 году.
Я только что понял, что это на самом деле охватывает все критерии исходного вопроса:
источник
Не разрешается использовать STL или другие стандартные библиотеки C ++, потому что технический директор полагал, что «мы» могли бы сделать это лучше и быстрее. Даже базовые конструкции, такие как списки и строковый класс.
источник
Венгерская нотация
Образец, извлеченный из « Объяснения венгерского соглашения об именовании идентификаторов нотаций Чарльза Симони » в MSDN.
источник
Однажды я работал над проектом, в котором руководитель проекта предписывал, чтобы каждая переменная - КАЖДАЯ переменная - имела префикс «v». Итак, vCount, vFirstName, vIsWarranty и т. Д.
Почему? «Потому что мы работаем в VBScript, и все равно это вариант».
WTF.
источник
f
перед функциями, тогда ваш код действительноfUcked (vUp)
.Почти забыл этот:
Цитата из менеджера:
Это было не для потребительского программного обеспечения, а для отдельной крупной организации. Само собой разумеется, клиент заплатил за годы спустя. Может показаться банальным, но пытаться игнорировать ошибки труднее, чем их находить.
источник
Внедренные XML-комментарии ко всем не приватным методам, константам, перечислениям и свойствам.
Это привело к некоторому довольно загроможденному коду, тем более что конечным результатом было то, что люди либо просто нажимали ///, чтобы создать пустую заглушку комментария для всего, либо устанавливали GhostDoc и добавляли автоматически сгенерированные комментарии:
[Edit] Причина, по которой я упоминаю это как смехотворный стандарт, не в том, что я думаю, что комментарии к методам глупы, а в том, что качество этих комментариев не было применено каким-либо образом и привело к тому, что в кодовых файлах просто создавалось много беспорядка. , Существуют лучшие способы создания значимых документов кода, чем слепое требование «должен иметь комментарий».
источник
Validations the handler
' - э-э-эНе совсем стандарт кодирования, но в контроле исходного кода был файл с именем changelog.txt.
Каждый раз, когда вы делали проверку, вам приходилось вручную добавлять запись в этот файл. Эта запись была номером ревизии subversion и вашим комментарием для регистрации.
Когда начался новый технический директор, и кто-то сказал ему об этом, он быстро принял исполнительное решение и сказал: «Мы больше не будем этого делать» и удалил файл. Это продолжалось годами.
источник
svn log
?В некоторых местах, с которыми я работал, требовалось комментировать неиспользуемый или устаревший код, а не удалять его. Вместо того, чтобы доверять VCS для истории и т. Д., Он мучительно поддерживался в файлах через закомментированный код.
Большая проблема, с которой я столкнулся, заключается в том, что вы часто понятия не имели, почему код был закомментирован. Было ли это потому, что какой-то разработчик активно вносил изменения и хотел оставить его для справки или он больше не нужен?
источник
Худший стандарт кодирования, в котором я когда-либо участвовал, - это кодовые базы, которых вообще не было. Я предпочел бы следовать стандарту кодирования, с которым я полностью не согласен, чем работать в базах кода, где его вообще нет. Это значительно усложняет изучение новых частей базы кода.
источник
Использование встроенных комментариев для контроля версий было самым бессмысленным стандартом кодирования, который я игнорировал.
Oracle DBA, который настаивал на правильном использовании пробелов при «ведении» базы данных с помощью таблицы с высокой конкуренцией, содержащей более 200 полей и 40 триггеров, подходит к концу.
источник
Я сделал обзоры кода в проекте под руководством первого таймера C ++, который решил, что все функции-члены класса должны иметь префикс с именем класса и видимостью:
источник
Требуется отступ всего кода на четыре пробела;)
источник
У меня была работа много лет назад, когда весь наш код нужно было выравнивать по левому краю - без отступов. Парню, который придумал эту политику, не нравилось прокручивать взад-вперед по горизонтали при просмотре длинных строк кода, приравнивая это, играя в пинг-понг своими глазами.
источник
Это еще один пример того, как отсутствие стандартов кодирования может повредить.
Подрядчик, работающий в крупном банке, настаивал на том, что соблюдение стандартов было лучшим. Приложение было написано в dBase / Clipper, для которого он был единственным разработчиком, и, конечно, он придумал стандарт.
Я был очень новым программистом-самоучкой на этом этапе, но знал достаточно, чтобы не слушать сумасшедшего ученого и убираться отсюда, прежде чем я попросил взять на себя управление проектом.
И да, мы рассказали руководству о том, насколько плохими были эти методы, но всегда получали обычные «платили этому подрядчику верхний доллар, он должен знать, о чем говорит».
источник
\07
в начало каждого файла сейчас.i
Используется для индексирования массива в одной процедуре может помешать сi
в процедуре вызова. Вам нужно использоватьPRIVATE ALL LIKE m*
иPRIVATE i
предотвратить эту «слежку»Еще один взрыв из моего прошлого.
Цитата от владельца компании:
Проект Java представлял собой систему торговли акциями, предназначенную для обработки нескольких десятков акций, которая теперь использовалась для обработки тысяч. Вместо того чтобы устранять недостатки дизайна или плохое аппаратное обеспечение, вся компания была вынуждена конвертировать все приложения, не относящиеся к C / C ++, в C / C ++, и все новые разработки должны были выполняться на C / C ++. Интерпретирующие языки означают что-то не скомпилированное, и владелец рассматривал только скомпилированные ассемблер, C и C ++.
Для компании из 800 человек, в которой большая часть кода была на Java и Perl, это означало, что вся компания потратила большую часть своего времени в течение следующих нескольких лет, переписывая совершенно прекрасный код на C / C ++.
Забавно, но за двадцать лет до этого фиаско я был в другой компании, в которой технический руководитель решил, что нашу логику сортировки (это была Bubble Sort) необходимо перекодировать в ассемблере, а не заменять быстрой сортировкой, потому что - алгоритмы делают не улучшить производительность. Единственный способ повысить производительность - переписать ту же логику на ассемблере.
В обоих случаях я ушел вскоре после того, как велел диктат.
источник
Как и многие программисты (но недостаточно), я ненавижу оформление кода. Меня бесит, когда мне приходится использовать префикс знака доллара ($) для имен переменных или подчеркивания для частных переменных, даже без использования методов получения / установки. Если вам нужно украсить свой код, чтобы понять его, то вам нужно черт побери!
источник
Некоторое время я работал с веб-системой, где все передаваемые параметры должны были называться P1, P2, P3 и т. Д. У меня не было шансов узнать, для чего они нужны, без обширной документации.
Кроме того - хотя это не является строго стандартом кодирования - в одной и той же системе каждый отдельный файл должен был называться xyz0001.ext, xyz0002.ext, xyz0003.ext и т. Д., Где xyz был кодом для самого приложения.
источник
Это было долгое время назад - 1976, если быть точным. Мой начальник никогда не слышал об Эдсгере Дейкстре и не читал о проблеме CACM, но откуда-то слышал слух, что «GOTO плох», поэтому нам не разрешали использовать GOTO в наших программах на COBOL. Это было до того, как COBOL добавил «конец, если», поэтому в то время у него было только две с половиной из трех классических структур управления (последовательность, если / то / еще, выполнять (то есть делать, пока)). Он неохотно разрешил GOTO в наших Базовых программах и инструкции по веткам в наших языковых программах на Ассемблере.
Извините, что это своего рода история "ты должен был быть там". Насколько я знаю, каждый язык, изобретенный с 1976 года, имеет адекватные структуры управления, так что вам никогда не нужно использовать GOTO. Но дело в том, что начальник никогда не знал, ПОЧЕМУ GOTO считался вредным, или какой язык был детским расстройством, а какой - смертельным заболеванием.
источник
Я работал в проекте, где главный архитектор требовал написать (кстати, тоже) явный код. Один из худших примеров, которые я нашел в коде (и он с радостью одобрил), был следующий.
Даже ReSharper сказал вам, что это неправильно!
источник
else
будет выполняться ветвь final ( ).return verbose ? someString : someOtherString;
?На моей последней работе «стандарты» были бы очень сильным термином для того, что мне дал парень, который меня нанял. При программировании сайтов на ColdFusion и SQL мне были заданы следующие требования к кодированию:
Я начал менять их, как только он ушел.
источник
В моей жизни как программиста на C ++ были соблюдены два очень неприятных «правила»:
источник
O(n^2)
DOS-атак (подача ввода в худшем случае). Кроме того, почему не было возможности переключиться - это само по себе оправдание отказа от использования STL.Я вынужден иметь документацию XML для всех классов и членов класса. В том числе частный. Я очень рад использовать комментарии ghostdoc по умолчанию.
источник