Как вы предотвращаете слишком сложные решения или проекты? [закрыто]

Основная цель toString - создать строковое представление объекта, означает, что возвращаемое значение всегда является строкой. В большинстве случаев это просто класс объекта и имя пакета, но в некоторых случаях, таких как StringBuilder, вы получите фактически текст String.

13
задан IanL 18 September 2008 в 05:48
поделиться

14 ответов

Получение кого-то нового для рассмотрения его.

13
ответ дан Tom Ritter 18 September 2008 в 05:48
поделиться

Если его слишком твердое для тестирования дизайн является слишком сложным. Это - первая метрика, которую я использую.

5
ответ дан Will 18 September 2008 в 05:48
поделиться

Вот некоторые идеи получить более более простой дизайн:

  • читает некоторые книги программирования, и статьи, и затем применяют их в Вашей работе и пишут код
  • , читает много кода (хороший и плохой) записанный другими людьми (как проекты С открытым исходным кодом) и учатся видеть, какие работы и что не делает
  • системы поддержки сборки (модульные тесты), чтобы позволить экспериментированиям с Вашим кодом
  • управление версиями использования включить откат, если те экспериментирования понимают неправильно поворот
  • TDD (разработка через тестирование) и , BDD (поведение управляемая разработка)
  • изменяет Ваше отношение, спрашивает, как можно сделать его так, это , "это просто работает" (конвенция по конфигурации могла помочь там; или спросите, как Apple сделала бы это)
  • практика (как джазовые музыканты - затор с кодом, попробуйте Kata Кода)
  • , пишут тот же код многократно, с различными языками, и через какое-то время передал
  • , учат новые языки с новыми понятиями (если Вы используете статический язык, изучаете динамический; если Вы используете процедурный язык, изучаете функциональный;...) [один язык в год о праве]
  • , просят, чтобы кто-то для рассмотрения Вас кодировал и активно спросил, как можно сделать код более простым и более изящным ( и затем сделать его )
  • , получают годы под поясом путем выполнения выше вещей (время помогает активному уму)
3
ответ дан Juha Pohjalainen 18 September 2008 в 05:48
поделиться

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

2
ответ дан kemiller2002 18 September 2008 в 05:48
поделиться

Считайте "Работу Эффективно С Унаследованным кодом" Michael C. Feathers.

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

2
ответ дан Matt Cruikshank 18 September 2008 в 05:48
поделиться

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

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

трудная часть - то, что парень, который разрабатывается дизайн "works-on-any-planet", часто рассматривается как умный, таким образом, Вам, вероятно, придется работать усерднее, чтобы утверждать, что его дизайн также умен.

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

5
ответ дан benzado 18 September 2008 в 05:48
поделиться

Использование Разработки через тестирование и после Robert C. Martin Три Правила TDD:

  1. Нельзя написать производственный код, если он не должен делать провальную передачу модульного теста.
  2. Нельзя больше писать модульного теста, чем достаточно для сбоя; и отказы компиляции являются отказами.
  3. Нельзя больше писать производственный код, чем достаточно для передачи одного провального модульного теста.

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

2
ответ дан Bradley Harris 18 September 2008 в 05:48
поделиться

Тест сначала может помочь здесь, но это не подходит для всей ситуации. И это не панацея так или иначе.

Запускаются маленький , другая прекрасная идея. Необходимо ли действительно наполнить все 10 шаблонов разработки в эту вещь? Попытайтесь сначала сделать это "глупый путь". Не вполне сокращает его? Хорошо, сделайте это "немного менее глупый путь". И т.д.

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

Использование склоняются язык. Языки, такие как Java или иногда C++ иногда, кажется, поощряют противные, замысловатые решения. Простые вещи имеют тенденцию охватывать по нескольким строкам кода, и просто необходимо пользоваться 3 внешними библиотеками и большой платформой для управления всем этим. Рассмотрите использование Python, Ruby, и т.д. - если бы не Ваш проект, затем для некоторого личного пользования. Это может изменять Ваше мышление , чтобы способствовать простоте и быть гарантированным, что простота возможна.

1
ответ дан Paweł Hajdan 18 September 2008 в 05:48
поделиться

Это неизбежно, после того как Вы были программистом, что это произойдет. Если Вы серьезно имеете непредполагаемый усилие или поражаете проблему, где Ваше решение просто не работает затем кодирование остановки и добирается говорящий с Вашим менеджером проектов. Мне всегда нравится брать решения со мной на встречу, проблемой является A, можно сделать x, который займет 3 дня, или мы можем попробовать y, который займет 6 дней. Не делайте выбор сами.

0
ответ дан AndrewB 18 September 2008 в 05:48
поделиться
  • Говорят с другими программистами в любой момент. Чем больше глаз там находится на дизайне, тем более вероятно сверхсложный аспект показан рано, прежде чем это станет слишком косным в кодовой базе.
  • Постоянно спрашивают себя, как Вы будете использовать то, что Вы в настоящее время продолжаете работать. Если ответ - то, что Вы не уверены, остановитесь для пересмотра прежнего мнения то, что Вы делаете.
  • я нашел полезным кратко записать мысли о том, как потенциально упростить что-то, что я в настоящее время продолжаю работать. Тот путь, после того как у меня на самом деле есть он работа, легче возвратиться и осуществить рефакторинг или восстановить по мере необходимости вместо того, чтобы смешать с чем-то, что это еще даже не функционально.
0
ответ дан lancekt 18 September 2008 в 05:48
поделиться

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

Несколько методов я нахожу полезными:

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

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

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

0
ответ дан Rob Walker 18 September 2008 в 05:48
поделиться

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

Это следует из сообщения Bendazo - упрощают, пока это не становится легким.

0
ответ дан Doug Scott 18 September 2008 в 05:48
поделиться

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

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

0
ответ дан Kevin Conner 18 September 2008 в 05:48
поделиться

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

Просят мнения от людей, которые получают их удары от чистых, простых решений.

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

0
ответ дан BefittingTheorem 18 September 2008 в 05:48
поделиться
Другие вопросы по тегам:

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