2010-10-18 3 views
5

Я знаю, что хорошие методы программирования всегда помогают в долгосрочной перспективе для проекта, но иногда они просто кажутся дорогостоящими. Например, он предположил, что я поддерживаю файл заголовка и файл cpp для каждого класса, который я создаю, сохраняю только объявления в заголовках, а определения в cpp. Даже с 10-12 классами этот процесс становится очень громоздким. Обновление make-файла каждый раз, когда добавляется новый класс dependecies и evthing .. занимает много времени ...Хорошая практика программирования в сравнении со скоростью ad-hoc-программирования

В то время как я занят этим, другие просто пишут evthing в одном fie, выдает одну команду компиляции и запускать их программы ... почему я тоже не должен делать то же самое? Его быстро и работает?

Даже пытаясь придумать короткие, значимые имена для переменных и функций, занимает много времени, в противном случае вы в конечном итоге набрав 30 символов длинных имен, полностью unmanagable без автозаполнения

Edit:

Хорошо позвольте мне сказать немного по-другому: Допустим, что я работаю над проектом небольшого среднего размера, который никогда не будет нуждаться в обслуживании другого разработчика (или даже меня). Это в основном одноразовое развитие. В этом случае стоит придерживаться практики программирования. Я предполагаю, что мой вопрос: действительно ли хорошие методы программирования помогают во время разработки или они просто окупаются во время обслуживания?

+3

Используйте автозаполнение. – Kendrick

+6

Каков ваш вопрос? Вы признаете, что хорошая практика помогает в «долгосрочной перспективе». Неужели это конец? –

+0

Ваше так называемое «специальное программирование» выполняется только для очень маленьких проектов. Для программного обеспечения любой реальной ценности или сложности, хорошие практики программирования, чтобы фактически заставить вас сделать это быстрее, делая это правильно в первый раз, потому что ошибки, сделанные позже в процессе, экспоненциально дольше, чтобы исправить. –

ответ

2

Недостаток ad-hoc в долгосрочной перспективе, когда дело доходит до обслуживания (особенно, когда кодеры обслуживания - это люди, кроме вас самих). Такие методы могут быть в норме для ярких доказательств, но вызовут больше проблем в будущем, если вы не перестровете должным образом.

5

Я не работал в поле надолго, но не расслаблялся и не документировал, когда я иду, определяя переменные с полезными именами и т. Д. ... определенно экономит время в долгосрочной перспективе. Это экономит время, когда другие разработчики/я вернусь к коду для обслуживания.

Не застрял, задаваясь вопросом, что означает эта переменная, почему я это сделал и т. Д.! :)

+0

Я могу только второму этому. Черт возьми, я запрограммировал не более двух лет (если количество файлов пакета ... если нет, больше похоже на один до 1,5) - и все же я уже испытал боль, которую плохое программирование приносит позже (где «позже» может быть «после неделю не касаясь его "). – delnan

2

Да, это стоит делать «правильно», то есть хорошо, потому что в основном мне платят сейчас или платят мне позже, и вы не единственный человек, который когда-либо увидит код. Если вам понадобится 15 минут, чтобы сделать это «хорошо» - сколько времени вам понадобится 6 месяцев (или больше), чтобы выяснить, что имеется в виду - в вашем собственном коде!

Теперь вы можете использовать идею 3 ударов Мартина Фаулера для рефакторинга. Впервые в коде, чтобы исправить что-то, обратите внимание, что он может быть реорганизован, но вы слишком заняты и отпустите его. Второе время назад в том же коде, то же самое. Третий раз: реорганизовать код.

+0

Возможно, вам понравится это: http: //aegisknight.livejournal.com/138346.html – Joe

2

Эффективность практики программирования, похоже, не является вашей проблемой здесь. То, что вас беспокоит, - это инструменты, которые вы используете для разработки. Существует множество IDE и других возможностей для сохранения, например, ваших файлов make автоматически.

4

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

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

Приложение: Если его трудно назвать лаконично, его, вероятно, необходимо разбить на более модульные устройства.Метод или переменные, которые трудно назвать, - это определенный запах кода.

+0

Ну, иногда имена переменных длинны только потому, что слова, составляющие это имя, имеют много букв и слогов (даже если переменная имя - всего два слова). Обычно люди просто вынимают гласные, чтобы их легче набирать, но тогда они выглядят как непримиримая тарабарщина. :( – FrustratedWithFormsDesigner

+3

Кодовые запахи не являются универсальными правилами, это вещи, которые МОГУТ указывать на проблему. Резка гласных с искусственно сокращающимися именами переменных и методов не служит никакой полезной цели, и ее следует избегать. – JohnFx

+0

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

2

Его все о долгосрочной поддержке. Очевидно, что вы либо не кодировали команду, либо не должны были смотреть на код, который вы написали много лет назад. Я могу открыть код, который я написал 15 лет назад, и изменить его с помощью очень маленьких кривых relearning, если я дал значащие имена переменных, а если у меня нет, то потребуется некоторое время, чтобы выяснить, что я делаю с этим X и что H, и почему T не должно быть больше 4.

Попробуйте использовать код с 10 людьми в команде и каждый из них просто поместите код в любом месте, которое им нравится ... Я работал с такими людьми. Если бы линчинг по-прежнему пользовался общественной поддержкой, я бы привел многих. Представьте это ... Я знаю, что мне нужно изменить подпись на Foo.SetFoos (int FoosInFooVille), но я искал Foo.h, и он не был найден, ну теперь я просто искал Foo.cpp правильно? К сожалению, чтобы сохранить ... время? ... они заклинили Foo.cpp в Chew.cpp ... так что я смотрю там ... его не в верхней части файла! Я нашел Foo в этом файле и вижу, что его выше, что ... конечно ... нет, не нашел ... его в Chew.h. Теперь я готов проверить журнал SVN и настроить ракеты-носители с питанием от USB при этом рывке в следующий раз, когда он пройдет мимо.

+0

Таковы ситуации, когда 'svn винить' предпочитают' svn annotate'. – ninjalj

Смежные вопросы