2010-04-13 2 views
10

Я видел this question, и это напомнило мне AutoGenerateColumns в старой DataGrid. Несколько раз, когда я их использовал, я закончил это, потому что мне понадобилось форматирование данных за стандартом «выплевывать столбцы источника данных». Аналогично, с переключением, похоже, что это сэкономит время, но тогда вам нужно будет отслеживать состояние или что-то еще, и вы переписываете код соответствующим образом.Какие ярлыки программирования вы заканчиваете тем, что сожалеете или отступили?

Есть ли что-то, что вы в конечном итоге используете, думая, что это сэкономит вам время, но в конечном итоге откажется, потому что он не делает то, что вам нужно?

+0

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

ответ

5

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

Много раз это заканчивалось отладкой ада. Хуже всего то, что, черт возьми, пошел к моим коллегам, а не ко мне.

3

Я думаю, что очевидным ответом на самое жалкое программирование «ярлык» было бы gotos.

Но в отношении фреймворков, я думаю, что все рамки могут быть ловушкой иногда. Они неплохо подходят, но я не думаю, что вы найдете фреймворк, который не заставит вас покупать сокращенное время разработки с уменьшенной ремонтопригодностью. Я работаю в основном с Drupal, и каждый раз, когда выходит новая версия, мне приходится переписывать хотя бы часть моего пользовательского кода ... но это цена, которую я плачу за то, что вы быстро добавляете новые функции с модулями сообщества, и для меня, это стоит того. Для другого набора целей или приложений это, конечно, не стоило бы того.

+4

-1 для избиения goto. Если бы мир был совершенным, и рекурсия была реализована и полностью поддерживалась на каждом языке программирования (стек динамически расширяется, оптимизируется хвостовая рекурсия, поддерживаются сопрограммы или продолжения и т. Д.), Тогда любая программа может быть написана элегантно без gotos. Если кто-то пытается избежать рекурсии, goto часто является самым простым способом реализации конечного автомата (и не говорите мне, что switch/case лучше, он более подробный). В моей библиотеке JSON используются автоматы на основе goto во многих своих функциях: http://constellationmedia.com/~funsite/static/json-0.0.2/json.c –

+1

+1 для фреймворков, и я не буду трогать аргумент «goto». – bmb

+0

+1 для заметки о фреймворках, хотя :) (bah, SO не позволит мне изменить его) –

2

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

+0

Я получаю привязку данных вручную для Интернета. Но я не могу сделать это для толстого клиентского приложения. Я думаю, что я пошлю бонкеров, если мне придется писать код привязки данных все время. :) – Tony

1

Использование макросов C/C++. Я думаю, что это большие проекты ловушек, которые попадают в более мелкие проекты.

+2

Задача: узнать, где putchar реализован в glibc. –

3

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

Таким образом, веб-уровень вызывает вызов делегата. Делегирование вызовов реализации. Служебные интерфейсы. Службы. Реализация вызовов dao-интерфейс вызывает dao-реализацию и так далее.

И, в конце концов, поскольку вы не делали распространение на этом уровне, вы заметили, что все ваши реализации делегатов - это одна строка кода, и вы вытаскиваете их для ясности, потеряв некоторую эффективность, написав сотни классов делегатов в первую очередь.


Или: большинство проектов в тот или иной момент массово переоценить, насколько велика UserBase приложение будет, и, к сожалению, код, что вместо того, чтобы более эффективно кодирование. Приложение поваренной книги с 200 пользователями намного чаще используется для написания, чем приложение, определяющее отрасль, со ста тысячами пользователей каждое утро, но разработчики склонны кодировать часть - но не все - свое приложение для невероятного случая.

Если вы пишете мир привет, просто напишите код и разложите его по мере необходимости.

+1

Дин Дж, похоже, что вы описываете противоположность «ярлыков», о которых вы в конце концов сожалеете. Вы делаете отличные очки, но они кажутся длинными ... – bmb

+0

Они были предназначены как длинные ярлыки; сделать код более удобным для поддержания в целом. Они оказались короткими и длинными ошибками. К сожалению? –

1

Не совсем ярлык, но: Написание класса C++ String, даже не учитывая возможность того, что у кого-то была такая же идея.Тем не менее, это было хорошим упражнением, поскольку я узнал, что:

  • Написание библиотеки не делает все программирование под гору оттуда. Может быть проще иметь библиотеку под рукой, но если сложнее понять семантику библиотеки, чем реализовать ее вручную, библиотека может оказаться довольно бесполезной.
  • В C++ есть много действительно опрятных функций.
  • На C++ всегда отсутствует одна функция, которая мне действительно нужна.
+0

Часто я нахожу библиотеку, которая выглядит так, как будто она делает то, что мне нужно для этого, а затем на практике она неуклюжая, медленная и т. Д. К тому времени, когда я выяснил, как исправить чей-то код, я в конечном итоге слом его и все равно писать мои собственные. Похоже, что это занимает больше или меньше времени - так или иначе есть кривая обучения и экспериментирование, прежде чем это будет сделано так, как вы этого хотите. – Kev

+0

@ Kev: Звучит так же, как то, что я прочитал, написав свою библиотеку JSON. –

+0

Как изобретать заново изобретенное колесо ярлыком ?? – Victor

2

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

Почти всегда лучше просто начертить символ персонажа, заставив себя рассмотреть каждого из них. Но я продолжаю это делать, думая: «что может пойти не так», и позже сожалею о решении.

+0

Лучше всего отвлечь его, чтобы у вас не было дублирования кода: P – Earlz

+0

не может абстрагировать каждую строку кода: p –

2

Использование последней и самой большой функции от < Вставить фреймворк здесь > только для того, чтобы он терпел неудачу и занимал больше времени.

Я все для новых функций, но использовать их слишком рано может быть проблематичным.

+0

+1 - Да! Entity Framework, я смотрю на вас! – John