Как программисты, я чувствую, что наша цель - предоставить хорошие абстракции по данной модели предметной области и бизнес-логике. Но где должна остановиться эта абстракция? Как найти компромисс между абстракцией и всеми ее преимуществами (гибкость, простота изменения и т. Д.) И простотой понимания кода и всех его преимуществ.
Я полагаю, что склонен писать чрезмерно абстрагированный код, и я не знаю, насколько он хорош; Я часто пишу так, будто это какая-то микросреда, которая состоит из двух частей:
- Микромодули, которые подключены к микросистеме: эти модули легко понять, разработать и обслуживать как единое целое. Этот код в основном представляет код, который фактически выполняет функциональные функции, описанные в требованиях.
- Соединительный код; Теперь я верю, что проблема здесь. Этот код имеет тенденцию быть сложным, потому что он иногда очень абстрактен и его трудно понять в начале; это возникает из-за того, что это только чистая абстракция, основа реальности и бизнес-логики выполняется в представленном коде 1; по этой причине не ожидается, что этот код будет изменен после тестирования.
Это хороший подход к программированию? Что, имея изменяющийся код, очень фрагментированный во многих модулях и очень легкий для понимания, и неизменяющий код, очень сложный из абстракции POV? Если весь код будет одинаково сложным (то есть код 1 более сложным и взаимосвязанным, а код 2 более простым), чтобы любой, кто просматривает его, мог понять его за разумное время, но изменение стоит дорого, или решение, представленное выше, хорошо, где «изменение кода» очень легко понять, отладить, изменить, а «связать код» довольно сложно.
Примечание: речь идет не о читабельности кода! Оба кода в 1 и 2 доступны для чтения, но код в 2 поставляется с более сложными абстракциями, в то время как код 1 поставляется с простыми абстракциями.