Выполняет следующие зацепка для написания рамки на вершине стека технологий?
Мне нравится твердый, и я стараюсь использовать и применять его, когда я'м развивается. Но я могу'т помочь, но чувствую, как будто сплошная подход превращает ваш код в 'базы' код - код, т. е. вы бы дизайн при создании фреймворка или библиотеки для других разработчиков, чтобы использовать.
Я'вэ как правило, практикуется в 2-х режимах программирования - создание более или менее точно то, что просят через требования и поцелуй (в обычном программировании), или создание очень универсальный логике, услуги и т. д., которые обеспечивают гибкость и другие разработчики могут понадобиться (основы программирования).
Если пользователь просто хочет, чтобы приложение, чтобы сделать X и y вещи, есть ли смысл следовать твердым и добавить в целую кучу точек входа абстракции, когда вы Don't даже знаю, если это даже действительную проблему для начала? Если вы добавляете эти точки входа абстракции, вы на самом деле выполняют все требования пользователей, или создавая основу поверх существующей базы и технологий стека, чтобы сделать будущие дополнения легче? В этом случае вы служите интересам заказчика или застройщика?
Это то, что кажется распространенным в Java-мире предприятия, где он чувствует себя, как будто вы'вновь проектировании своего собственного фреймворка на J2EE или весна так, что она'ы лучший интерфейс для разработчика, вместо того чтобы сосредоточиться на интерфейс для пользователя?
Ваши наблюдения правильные, твердые принципы ИМХО сделано с библиотеки или базы кода в уме. Когда вы просто следите за всеми их слепо, не спрашивая, имеет ли смысл или нет, вы рискуете overgeneralize и вкладывать намного больше усилий в системе, чем, вероятно, необходимо.
Это компромисс, и он должен какой-то опыт, чтобы принимать правильные решения о том, когда обобщают, а когда нет. Возможный подход к этому должен придерживаться принципа YAGNI - не сделать код твердое "просто в случае с" - или, выражаясь вашими словами: не
вместо этого, обеспечить гибкость других разработчиков действительно нужно как только они в ней нуждаются**, но не ранее.
Поэтому, когда у вас есть одна функция или класс в своем коде вы не уверены, если он может быть повторно использованы, Дон'т положить его в основу сейчас. Подождите, пока у вас есть актуальное дело В использовать и рефакторинг чтобы "достаточно солидный для этого дела" по. Дон'т реализовать более настраиваемость (в соответствии с ОКП), или запись точек водозабора (с помощью DIP) в такой класс, как вам действительно нужно для реальной переработка делу. Добавьте следующий гибкость при следующей требование использовать на самом деле нет.
Конечно, такой способ работы всегда будет требовать некоторое количество рефакторинга в существующей рабочей базой кода. Именно поэтому автоматические тесты важны здесь. Так что ваш код будет достаточно прочной, с самого начала это блок-тестируемые-это не пустая трата времени, и это не противоречит YAGNI. Автоматические тесты-это веские аргументы в пользу "и код использовать то, что", так как код в Коле используется с производства код а также из тестов. Но имейте в виду, просто добавить гибкость вам действительно нужно для контрольной работы, не меньше, не больше.
Это на самом деле старая мудрость. Давно раньше срока твердый стал популярным, кто-то сказал мне, перед тем как писать рекод можно использовать, мы должны написать использовать код. И я до сих пор думаю, что это хорошая рекомендация.
Из моего опыта, при написании приложения, у вас есть три варианта:
В первом случае, это'ы общем в итоге тесно связан код, что нет модульных тестов. Уверен, что это's быстро писать, но это's жесткий, чтобы проверить. И это'ы прямо заноза в дальнейшем меняться при изменении требований.
Во втором случае, огромное количество времени тратится на попытки предвосхитить будущие потребности. И слишком часто эти предполагаемые будущие потребности никогда не материализоваться. Это похоже на сценарий, который вы описываете. Это'ы пустая трата усилий и результатов в сложных кодекс излишне, что's по-прежнему трудно изменить, когда требование это было'т ожидается, появится.
Последний случай один стремиться на мой взгляд. Использовать TDD или аналогичные методы, чтобы проверить код, как вы идете и вы'll итоге с слабосвязанных код, что's легкий для того чтобы изменить, но все равно быстро писать. И дело в том, что делая это, вы, естественно, следуют многие твердые принципы: маленькие классы и функции; интерфейсы и вводят зависимостей. И миссис Лисков в целом тоже устраивают как простые классы с одиночным обязанности редко ссориться ее принцип замещения.
Единственный аспект твердым, что не'т реально применить здесь открыто/закрыто принципе. Для библиотек и фреймворков, это важно. Для автономных приложений, не так много. На самом деле это's в случае написания кода и"сползто": легко писать (и читать), легко проверить и легко для поддержания.
Перспективы у вас могут быть искажены в результате личного опыта. Это скользкая дорожка фактов, которые по отдельности правильные, но в результате вывод-Это'т, кажется правильным на первый взгляд.
Как результат, механизмы имеют более высокую потребность в эффективной практике и, как правило, построены разработчиками, кто более тесно сталкивался с хорошей практикой. Это означает, что когда вы взаимодействуете с базы и небольших библиотек, в Кодексе практики вы'МР взаимодействовать с будет чаще быть найден в больших рамках. Это заблуждение очень распространено, электронная.г доктор every я'вэ лечили был заносчив. Поэтому я делаю вывод, что все врачи высокомерно. Эти заблуждения всегда страдают от вывода blanket, основанные на личном опыте. В вашем случае, это's возможно, что вы'вэ преимущественно опытные передовой практики в более широком контексте, а не в небольших библиотеках. Ваши личные наблюдения-это'т ошибаться, но это'ы anecdotal доказательств и не универсально.
Как твердый превратить простой код в код платформы? Я'м не стан для твердых любыми средствами но это's действительно не очевидно, что вы подразумеваете здесь.
Я признаю, что я Дон'т думаю, что в твердом выражении себя, потому что я пришел через Банда четырех и Джош Bloch школ программирования, а не в школе Боб Мартин. Но я действительно думаю, что если вы думаете, что “твердый” = “добавляя больше слоев к тек стек”, вы ошибаетесь.
П. С. Дон'т продавать преимущества “лучше UX для разработчика” короткие. Код проводит большую часть своей жизни в обслуживании. Разработчик вы.