Как Вы мешаете промежуточным решениям продержаться навсегда?

  • Закрыто: это спецификатор доступа. По умолчанию переменные экземпляра (члена) или методы класса в c ++ / java являются закрытыми. Во время наследования код и данные всегда унаследованы, но недоступны вне класса. Мы можем объявить наших членов данных конфиденциальными, чтобы никто не мог вносить непосредственные изменения в наши переменные-члены, и мы можем предоставлять публичные получатели и сеттеры для изменения наших частных членов. И эта концепция всегда применяется в бизнес-правиле.
  • Защищено: это также спецификатор доступа. В C ++ защищенные члены доступны внутри класса и унаследованного класса, но не вне класса. В Java защищенные члены доступны внутри класса, унаследованного класса, а также для всех классов внутри одного и того же пакета.
79
задан AstroCB 30 August 2014 в 21:08
поделиться

26 ответов

Запишите тестовый сценарий, который приводит к сбою взлом.

, Если Вы не можете записать тест, который взлом проваливает, тогда или нет ничего неправильно со взломом, в конце концов, или иначе Ваша среда тестирования является несоответствующей. Если первый, убегает быстрые перед тратой жизни на бесполезную оптимизацию. Если последний, ищите другой подход (или на отмечающие взломы, или на тестирование...)

37
ответ дан Steve Jessop 24 November 2019 в 10:14
поделиться

Признание:

я использовал '#define частную общественность' в C++ для чтения данных с некоторого другого слоя кода. Это вошло как взлом, но работает хорошо, и фиксация его никогда не становилась приоритетом. Это теперь 3 года спустя...

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

0
ответ дан Jeroen Dirks 24 November 2019 в 10:14
поделиться

Мы должны были сделать это, как только - делают краткосрочную демоверсию, что мы знали, что не хотели сохранять. Клиент хотел его на winTel поле, таким образом, мы разработали прототип в SGI/XWindows. (Мы бегло говорили на обоих, таким образом, это не была проблема).

0
ответ дан Dan Hewett 24 November 2019 в 10:14
поделиться

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

1
ответ дан user43625 24 November 2019 в 10:14
поделиться

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

1
ответ дан David Plumpton 24 November 2019 в 10:14
поделиться

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

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

сорванная часть может быть легкой: Мне нравится делать это поместить клудж позади имени подпрограммы. Это облегчает обновлять, так как Вы разделяете код. То, когда Вы получаете свое постоянное решение, Вы - подпрограмма, может или реализовать ее или быть нет. Иногда подкласс может работать приятно на это также. Не позволяйте другим людям зависеть от того, что Ваше быстрое исправление, все же. Трудно рекомендовать какую-то конкретную технику, не видя ситуации.

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

1
ответ дан brian d foy 24 November 2019 в 10:14
поделиться

Некоторые решения я видел в прошлом:

  • Mark это с комментарием HACK в коде (или подобная схема такой как XXX)
  • Имеет автоматический отчет, выполненный и посланный по электронной почте еженедельно тем, которые заботятся, какие количества, сколько раз HACK комментарии появляются
  • , Добавляют новую запись в Вашей системе отслеживания ошибок с номером строки и описанием правильного решения (так знание, полученное от исследования прежде, чем записать, что взлом не потерян)
  • , пишут тестовый сценарий, который демонстрирует, как взлом перестал работать (если возможный), и проверьте его в соответствующем наборе тестов (т.е. так, чтобы это бросило ошибки, которые кто-то в конечном счете захочет к очистке)
  • , как только взлом установлен, и давление выключено, сразу запустите на правильном решении

, Это - превосходный вопрос. Одна вещь, которую я заметил, поскольку я получаю больше опыта: взломы покупают Вас очень короткий срок, и часто стоят Вам огромной суммы больше. Тесно связанный 'быстрое исправление', которое решает то, что Вы думаете, проблема - только для нахождения, когда это аварийно завершает это, что это не была проблема вообще.

1
ответ дан mm2001 24 November 2019 в 10:14
поделиться

Реальная цена представления быстрого исправления - то, что, когда кто-то еще должен представить 2-е быстрое исправление, они представят его на основе Вашего собственного быстрого исправления. Так, чем дольше быстрое исправление существует, тем более раскопанным это станет. Довольно часто взлом берет только немного дольше, чем делать правильно вещи, пока Вы не встречаетесь с 2-м взломом, который основывается на первом.

Так, очевидно, это (или, кажется), иногда необходимый для представления быстрого исправления.

Одно возможное решение, принимая Ваше управление версиями поддержки это, для представления ветвления из источника каждый раз, когда Вы делаете такой взлом. Если люди поощряются постараться не кодировать новые возможности в них особенных, "получают сделанные" ветвления, то это в конечном счете будет больше работы для интеграции новых возможностей с ветвлением, чем это будет для избавлений от взлома. Более вероятно, тем не менее, "хорошее" ветвление будет отброшено. И если Вы далеко достаточно вдали от выпуска, что создание такого ветвления не будет практично (потому что не стоит делать двойную упомянутую выше интеграцию), тогда Вы, вероятно, не должны даже использовать взлом так или иначе.

А очень идеалистический подход.

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

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

1
ответ дан Brian 24 November 2019 в 10:14
поделиться

Вы регистрируете вторую очень описательную ошибку против своей собственной "фиксации" и помещаете в - действительно комментируют прямо в зонах поражения, который говорит, "Этой области нужна большая работа. Посмотрите дефектный № 555" (используйте правильное число, конечно). Люди, которые говорят, "не вставляют взлом", кажется, не понимают вопроса. Предположите, что у Вас есть система, которая должна быть в порядке теперь, Вашим решением невзлома составляют 8 дней работы, Ваш взлом составляет 38 минут работы, взлом там для покупки Вас время, чтобы сделать работу и не потерять деньги при выполнении его.

Теперь все еще необходимо получить клиента, или управление соглашаются запланировать минуты N*100 времени, требуемого сделать, реальная фиксация в дополнение к минутам N должна была теперь зафиксировать его. Если необходимо отказаться реализовывать взлом, пока Вы не получаете такое соглашение, то, возможно, это - то, что необходимо сделать, но я работал с некоторыми понимающими людьми в том отношении.

1
ответ дан dlamblin 24 November 2019 в 10:14
поделиться
  • Получают его в письменной форме (электронное письмо). Таким образом, когда это становится проблемой, более позднее управление не "забывает", что это, как предполагалось, было временным.

  • Делают его видимым пользователям. Более видимые это - менее вероятные люди, собираются забыть возвращаться и делать это правильный путь, когда кризис закончен.

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

1
ответ дан CrashCodes 24 November 2019 в 10:14
поделиться

Большой вопрос. Это беспокоит меня много, также - и большую часть времени я - единственный человек, ответственный за приоритизацию проблем в моих собственных проектах (да, малый бизнес).

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

, Который не может, конечно, применяться вообще к Вашей рабочей среде: (

1
ответ дан gabr 24 November 2019 в 10:14
поделиться

Это напоминает мне об истории "CTool". В начале CTool был выдвинут одним из наших devs, я назову его Don как один возможный способ решить проблему, которую мы имели. Будучи серьезным трудолюбивым типом, Don корпел и поставил рабочий прототип. Вы знаете, куда я иду с этим. В течение ночи CTool стал частью потока операций компании со всем отделом в зависимости от него. К второму или третьему дню горькие жалобы начали передавать потоком приблизительно в недостатках CTOOL. Пользователи подвергли сомнению компетентность Don, обязательство и IQ. Протесты Don, что это, как никогда предполагалось, не было производственным приложением, не нашли отклика. Это продолжалось для годы . Наконец, кто-то нашел время для перезаписи приложения, много позже того, как Don отбыл. К этому времени такая ненависть стала приложенной к имени CTool, что, называя его версия 2 CTool была вне рассмотрения. Были даже формальные похороны для CTool, несколько напоминающего о копировальном устройстве (или действительно ли это был принтер?) сцена выполнения в Офис .

Некоторые могли бы сказать, что Don заслужил петель и стрелок для того, чтобы не заставлять его пойти право зафиксировать CTool. Моя единственная точка - то, что высказывание Вас должно никогда , вырубают решение, вероятно, незаконно в Реальном мире. Но если Вы - тот, чтобы сделать это, шагать осторожно.

1
ответ дан Andrew Cowenhoven 24 November 2019 в 10:14
поделиться

Мой ответ несколько отличается от других. Мой опыт состоит в том, что следующие методы помогают Вам остаться гибкими и переместить от hackey первые решения для повторения/альфы готовой беты/производства:

  1. Разработка через тестирование

  2. Небольшие единицы рефакторинга

  3. Интеграция Continous
  4. Хорошее управление конфигурацией
  5. база данных Agile рефакторинг techniques/database

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

0
ответ дан Daniel Honig 24 November 2019 в 10:14
поделиться

Мы используем Java и Гудзон для непрерывной интеграции. 'Промежуточные решения' должны быть прокомментированы с:

// TODO: Better solution required.

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

2
ответ дан johnstok 24 November 2019 в 10:14
поделиться

Я пытаюсь создать hacky решение так, чтобы оно могло быть перемещено в долгосрочный путь максимально безболезненно. Скажите, что Вы получили парня, который создает базу данных в SQL Server, потому что это - его самый сильный DB, но Вашим корпоративным стандартом является Oracle. Создайте дб с как можно меньшим количеством непередаваемых функций (как Типы данных bit). В этом примере не трудно избежать разрядных типов, но это делает переход позже более легким процессом.

2
ответ дан 24 November 2019 в 10:14
поделиться

Удача. По моему опыту, этого почти невозможно достигнуть.

, Как только Вы спускаетесь по скользкому пути реализации взлома, потому что Вы испытываете давление тогда, Вы могли бы также привыкнуть к проживанию с ним навсегда. Существует почти НИКОГДА достаточно времени для переделывания чего-то, что уже работает, неважно, как плохо оно реализовано внутренне. Что заставляет Вас думать, что у Вас волшебно будет больше времени "в некоторую более позднюю дату" для фиксации взлома?

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

4
ответ дан unintentionally left blank 24 November 2019 в 10:14
поделиться

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

то, Как решить его, зависит немного от того, почему это - плохое решение. Если Ваше решение плохо, потому что трудно измениться, или поддержать тогда в первый раз, когда необходимо сделать обслуживание и иметь немного больше времени тогда, это - правильное время для обновления до лучшего решения. В этом случае помогает, говорите ли Вы клиенту или Вашему боссу, что срезали путь во-первых. Тем путем они знают, что не могут ожидать быстрое решение в следующий раз вокруг. Cripling UI может быть хорошим способом удостовериться клиент, возвращается для получения зафиксированного материала.

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

4
ответ дан Mendelt 24 November 2019 в 10:14
поделиться

Это - твердый вызов. Я сделал взломы, лично вызывают, иногда Вы ИМЕЕТЕ для получения того продукта снаружи и в потребительские руки. Однако способ, которым я забочусь о нем, состоит в том, чтобы просто сделать это.

Говорят руководителю проекта или Вашему боссу или клиенту: существуют некоторые места, которые должны быть очищены и кодированы лучше. Мне требуется неделю, чтобы сделать это, и это собирается стоить меньше, чтобы сделать это теперь, тогда это должно будет сделать это 6 месяцев с этого времени, когда мы должны реализовать расширение на подсистему.

4
ответ дан MagicKat 24 November 2019 в 10:14
поделиться
  • я удостоверяюсь, что я красноречив о приоритете долгосрочной фиксации ОСОБЕННО после того, как кратковременное исправление этой ошибки вошло.
  • я детализирую причины, почему это - взлом и не хорошее долгосрочное решение, и используйте тех, чтобы заставить заинтересованные стороны (менеджеры, клиенты, и т.д.) понимать, почему это должно быть зафиксировано
  • В зависимости от случая, я могу даже ввести немного худшего страха варианта развития событий там. "Если это безопасно выравнивает защелки, целый мост мог бы выйти из строя!"
  • я беру на себя ответственность за предложение долгосрочного решения и удостоверяюсь, что это становится развернутым
5
ответ дан Wayne 24 November 2019 в 10:14
поделиться

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

, Если Вы проклинаете его, почему это в нижней части Списка ожидающих выполнения задач?

  • , Если это не влияет на Вас, почему Вы проклинаете его?
  • , Если это влияет на Вас, тогда это - проблема, которая должна быть решена ТЕПЕРЬ.
7
ответ дан James Curran 24 November 2019 в 10:14
поделиться

ВЫ не ДЕЛАЕТЕ ПРОМЕЖУТОЧНЫХ РЕШЕНИЙ.

Иногда я думаю, что программистам просто нужно сказать это.

Извините за это, но серьезно - hacky решение бесполезно, и даже на первом повторении может занять больше времени, чем выполнение части решения правильно.

прекратите оставлять меня Вашим загаженным кодом для поддержания. Просто ВСЕГДА КОДИРУЙТЕ ПРАВО IT. Неважно, сколько времени это берет и кто вопит на Вас.

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

, Даже если Вы не думаете, что Вы - великий программист, всегда стремитесь сделать лучшее, Вы можете, никогда не срезать путь - это не стоит Вам НИКАКОГО времени, чтобы сделать его правильно. Я могу выровнять по ширине этот оператор, если Вы не верите мне.

7
ответ дан Bill K 24 November 2019 в 10:14
поделиться

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

необходимо сделать математику на том, чего стоит время разработчика. Если требования к программному обеспечению встречаются, и единственная вещь неправильно состоит в том, что код является смущающим под капотом, это не действительно стоит фиксировать.

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

, Если это без ошибки и отвечает требованиям, это сделано. Поставьте его. Движение.

[Редактирование]

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

13
ответ дан Eric Z Beard 24 November 2019 в 10:14
поделиться

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

Другая опция, которая будет работать, добавляет bug.feature в Вашей платформе отслеживания (Вы действительно имеете один, правильно?) детализация переделывания. Тем путем это видимо и может вызвать проблему в какой-то момент.

14
ответ дан Craig 24 November 2019 в 10:14
поделиться

Вот большая похожая статья о технический долг .

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

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

16
ответ дан Mike Stone 24 November 2019 в 10:14
поделиться

Стратегия 1 (почти никогда выбираемый): не реализуйте клудж. Даже не сообщайте людям, это - возможность. Просто сделайте это правильный путь в первый раз. Как я сказал, этот почти никогда не выбирается, не из-за ограничений времени.

(нечестная) Стратегия 2: Лгите и Обман. Скажите управлению, что существуют ошибки во взломе, и они могли вызвать основные проблемы позже. К сожалению, большую часть времени, менеджеры просто говорят для ожидания, пока ошибки не становятся проблемой, затем исправляют ошибки.

Стратегия 2a: То же как стратегия 2, кроме действительно существует ошибки. Та же проблема, все же.

Стратегия 3 (и мой любимый): Разработайте решение каждый раз, когда Вы можете, и делать это достаточно хорошо, что интерн или обезьяна кода могли сделать это. Легче выровнять по ширине расходы небольшого количества денег обезьяны кода, чем выровнять по ширине Вашу собственную зарплату, таким образом, это могло бы просто быть сделано.

Стратегия 4: Ожидайте перезаписи. Заставить ждать. Рано или поздно (вероятно, позже), кто-то оказывается перед необходимостью переписывать вещь. Мог бы также сделать это прямо тогда.

17
ответ дан John Biazo 24 November 2019 в 10:14
поделиться

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

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

Это помогает сделать аналогии с повседневными вещами. Объясните им, как при создании промежуточного решения Вы сделали выбор, который удовлетворил зданию оно быстро, в противоположность тому, чтобы быть стабильным, удобным в сопровождении, и т.д. Это похоже на желание создать с древесиной вместо стали, потому что древесину легче сократить, и таким образом, Вы могли создать более быстрое промежуточное решение. Лес, однако, просто не может поддерживать основу 20-этажного здания.

2
ответ дан Jonathan Tran 24 November 2019 в 10:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: