Design patterns 最后不是';不是所有的设计都很难维护吗?

Design patterns 最后不是';不是所有的设计都很难维护吗?,design-patterns,Design Patterns,我已经审视并思考了我过去设计的优缺点,并考虑了我的下一次冒险以及它应该是什么。每个人都说MVC和其他人说一种设计不适合所有人。框架对我的项目没有多大帮助,主要是因为遗留数据库,我过去的想法当时也不可怕。有一件事我已经证实了。所有的设计模式都很难维护 考虑一下旧的经典asp和jsp,您可以在一个页面中混合代码和发出html。有人说添加一个专栏,这真的很容易做到。更改数据库,添加到SQL语句,添加新的HTML,几乎就在这里。如果我有DAL、BLL和UI,我有很多地方可以改变。如果我有带ORM的MVC

我已经审视并思考了我过去设计的优缺点,并考虑了我的下一次冒险以及它应该是什么。每个人都说MVC和其他人说一种设计不适合所有人。框架对我的项目没有多大帮助,主要是因为遗留数据库,我过去的想法当时也不可怕。有一件事我已经证实了。所有的设计模式都很难维护

考虑一下旧的经典asp和jsp,您可以在一个页面中混合代码和发出html。有人说添加一个专栏,这真的很容易做到。更改数据库,添加到SQL语句,添加新的HTML,几乎就在这里。如果我有DAL、BLL和UI,我有很多地方可以改变。如果我有带ORM的MVC,很多地方都有。所以对于一个小的改变,这个设计还不错。当有很多改变要做,而我有很多改变的时候,经典变得很糟糕

当webforms出现时,我可以将更多的东西分开,但改变东西仍然需要工作,只是在不同的层次上。我从未有过“设计师”,所以像所有的书中所说的那样,将UI网页发送给设计师,而不必发送逻辑,对我来说从来没有什么大不了的。我肯定这对某人有影响。不管怎么说,我认为它是“正确的”,因为微软这样说

然后微软内部的每个人都决定推广MVC,我发现微软并没有发明MVC、层分离等等。MVC似乎很好,但并不容易。每次更改都意味着各种图层上的更改

最后所有的设计模式,MVC,no-design,DAL,no-DAL,BLL等都很难使用和维护。没有什么是容易的。这是一项艰苦的工作。我希望我能看到这一切的宏伟设计,但我看到了这一切的艰辛。“易于维护”似乎是一个相对的术语


最后,不是所有的设计都很难维护吗?

在设计项目时,考虑到长期维护是可能的。我听到的最好的建议是封装变化 . 如果您设计的代码使最常用的修改部分最容易更改,那么维护方面的麻烦就会减少

当然,总有一种可能性(几乎可以肯定,对于长效产品),那就是你没有考虑过的东西将不得不改变

在这方面,随着时间的推移,任何有价值的项目、产品或过程都将变得越来越难以维护。没有什么是永恒的


*
来自“思考…”系列书籍。

所有设计的问题在于,您正在为最先进的用例+您认为未来可能出现的一些用例制作它们。我的经验表明,所要求的新功能以前几乎从未想到过,无论采用何种设计,都必须对系统进行深入的探讨

让深层次变革变得更容易的为数不多的几件事之一是干涸(不要重复自己)原则。如果你正在改变某件事,如果你只需要改变一次,那将是一个很大的帮助。设计模式应该有助于避免重复,因此它们通常比“mishmash”方法更受欢迎

但是,如果编写混合代码时不重复并使其可读,则其维护成本可能等于或高于MVC应用程序的维护成本

考虑旧的经典asp和jsp,其中 您可以将代码和html混合在一起 页有人说添加一列,然后 这真的很容易做到


我不同意这一点。我得到了这个确切的要求,在与之斗争了几个小时后,我决定只将新信息添加到现有的专栏中。问题是,某些列会根据条件显示和隐藏,并且每个列的内容也会更改。而不是说
Table.Columns[“price”]。Visible=false
s插入一列并与其标题对齐,则必须对嵌套的
的意大利面代码进行反向工程。显然,编写更干净的经典ASP是可能的,但抽象是一种工具,可以用于善或恶,就像其他任何东西一样。

你的问题是什么?这更像是你在发表声明。@johnny你最好去programmers.stackexchange,询问人们制作的易于维护的设计示例。如果这真的是你想要的。让这成为一个社区维基吧?@dark_charlie:CW是用来回答好的问题的,这些问题至少在理论上可以从社区编辑中受益。它有它的用途,但它不会让一个不可接受的问题变得可以接受。这是一次个人探索之旅,也是一次对经验教训的肯定请求,我怀疑这在这里任何地方都是一个可以接受的问题。“我会投票关闭程序员.se。@大卫,那么我想没有地方可以问我的问题了。