Я постоянно поражаюсь большими проектами, когда они достигают определенного уровня сложности. Как только я достигаю определенной точки в проекте, мой прогресс замедляется, и я обнаруживаю, что постоянно повторяю свои шаги и разбираюсь со всеми видами путаницы.
Я очень хорошо справился с рефакторингом из-за моей слабости. И я всегда стараюсь разложить мои объекты на более мелкие, более управляемые. Эта слабость также, вероятно, побудила меня уделять слишком много внимания правильному проектированию вещей.
Я знаю, что если я смогу разбить свои проблемы на более мелкие, я смогу справиться без проблем. Одна из стратегий, которая приходит на ум, - это разработка через тестирование. Что еще я могу сделать?
Ответы:
перестань думать о коде
начать думать о слоях, функциях, модулях, сервисах и других высокоуровневых абстракциях
вы перегружены, потому что вы думаете на слишком низком уровне
источник
Сделать комплекс простым - легко ; подождите, думаю, что все наоборот.
Все борются с этим, не существует прямого решения, которое имеет чрезвычайную эффективность.
Поскольку вы не указали это в своих вопросах, я бы предложил:
Фокус на функциональной сплоченности посредством:
Если вы найдете его в результатах поиска на первой странице, вы найдете два замечательных ресурса:
Что такое сплоченность в информатике?
Если у вас есть какие-либо вопросы, дайте мне знать.
источник
Разложите функции на минимально возможный элемент. Например, одно поле в форме. Выберите наиболее рискованный или высокоприоритетный вариант и двигайтесь вперед, как будто это простое исправление ошибки, а не большой проект. Это правда, что позже у вас будет какой-то рефакторинг, но, по крайней мере, вы будете двигаться вперед.
источник
Из моего опыта вы ответили на свой вопрос с комментарием о TDD. Для меня я часто чувствовал то же самое, что и вы, ранний быстрый успех быстро превращался в увязание в мелких деталях, когда система достигла определенного размера. Я обнаружил, что с TDD это помогло, потому что вы можете обрабатывать каждую часть системы как маленькие куски, зная, что остальная часть системы будет или должна продолжать работать после того, как вы ее покинули. Я думаю также, что с TDD это помогает убедиться, что ваша система четко разделена на более мелкие порции, которые можно проверить независимо.
источник
Некоторые люди хорошо разбираются в модульных, легко понятных программах, но большинство программистов не имеют этой возможности в той или иной степени. Я не знаю ни одной книги, процедуры или практики, которая могла бы превратить одного из программистов первого типа во второй, за исключением, возможно, большого опыта. Но я даже не уверен в этом.
Суть в том, что большинство программистов будут изо всех сил пытаться подняться выше посредственного, некоторым из них удастся быть в порядке (вот где я бы себя и 50% профессиональных программистов в (скажем) индустрии IB), и очень меньшинство будет отлично. Я должен сказать, что никогда в своей долгой карьере не встречал ни одного из этих превосходных :-)
источник
Я думаю, что многие люди пытаются чрезмерно проектировать решения. Они используют подход «Адам и Ева», когда чуть более практичный подход значительно упростит ситуацию.
Специализированные классы не являются злом, они являются естественным следствием разумного проектирования программного обеспечения.
Многие программисты, на мой взгляд, не понимают этого, и я не знаю ни одной книги, в которой это было бы понятно.
Еще одна вещь, которая, безусловно, помогает, это TDD, которая позволяет вам понять, «как» вы будете использовать класс на практике, и во многих случаях может спасти день, потому что он показывает возможные проблемы / ограничения в начале дня.
Наконец, еще одна ОЧЕНЬ важная вещь, которую я бы искал, если бы я был вами, это шаблоны проектирования. Шаблоны проектирования - это то, как люди умнее вас или меня решают задачи программирования. Идея, лежащая в основе шаблонов, угадайте, что ?, заключается в том, что они не должны использоваться в качестве кулинарных книг, рецептов, которые вы просто подбрасываете, но вдумчиво и в первую очередь понимаете сферу применения.
Разумное использование шаблонов значительно уменьшит количество деталей, которыми вы должны управлять.
Хорошая библиотека шаблонов дизайна, созданная с учетом ваших потребностей, окажется бесценной. Давайте посмотрим на очень простой пример, чтобы поместить вещи в контекст:
представьте, что у вас есть форма, в которой при нажатии кнопки другие формы должны обновляться. Это типичная схема «наблюдателя». У вас есть субъект и несколько наблюдателей, которые регистрируют себя вместе с субъектом. Зачем вам нужно реализовать интерфейс? Вы можете просто добавить методы или, что еще лучше, использовать интерфейс для наблюдателей и общий список для предмета. Теперь вы получили лучшее из обоих миров: независимость для наблюдателей и никаких сумасшедших вещей на эту тему.
Надеюсь, это имеет смысл для вас!
Andrea
источник
Проблема скорости разработки и читабельности может возникнуть, когда мы упускаем из виду необходимость абстракции. В некоторых больших кодовых базах, с которыми я работал, единственным наиболее распространенным врагом было бесчисленное количество специализированных классов, которые имеют очень похожие функциональные возможности, которые вызывают вздутие кода. Если мы сделаем шаг назад и поймем требования в целом, а не как части приложения, то на ум придет множество абстракций.
Несколько простых шагов, которые помогли мне
источник