新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版用于讨论编程和软件设计的技巧
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 编程心得 』 → [转帖]每个程序员都应牢记的7种坏味道,11种原则,23种模式 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9600 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]每个程序员都应牢记的7种坏味道,11种原则,23种模式 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     longshentailang 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:计算机学士学位
      文章:325
      积分:2990
      门派:XML.ORG.CN
      注册:2006/6/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给longshentailang发送一个短消息 把longshentailang加入好友 查看longshentailang的个人资料 搜索longshentailang在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看longshentailang的博客楼主
    发贴心情 [转帖]每个程序员都应牢记的7种坏味道,11种原则,23种模式


    (一)7种设计坏味道
    1.僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。
    2.脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。
    3.牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。
    4.粘滞性: 做正确的事情比做错误的事情要困难。
    5.复杂性(不必要的): 设计中包含有不具任何直接好处的基础结构。
    6.重复性(不必要的): 设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。
    7.晦涩性: 很难阅读、理解。没有很好地表现出意图。

    (二)11种原则 - Principle
    ----类原则
    1.单一职责原则 - Single Responsibility Principle(SRP)
    就一个类而言,应该仅有一个引起它变化的原因。
    (职责即为“变化的原因”。)
    2.开放-封闭原则 - Open Close Principle(OCP)
    软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。
    (对于扩展是开放的,对于更改是封闭的.
    关键是抽象.将一个功能的通用部分和实现细节部分清晰的分离开来.
    开发人员应该仅仅对程序中呈现出频繁变化的那些部分作出抽象.
    拒绝不成熟的抽象和抽象本身一样重要. )
    3.里氏替换原则 - Liskov Substitution Principle(LSP)
    子类型(subclass)必须能够替换掉它们的基类型(superclass)。
    4.依赖倒置原则(IoCP) 或 依赖注入原则 - Dependence Inversion Principle(DIP)
    抽象不应该依赖于细节。细节应该依赖于抽象。
    (Hollywood原则: "Don't call us, we'll call you".
    程序中所有的依赖关系都应该终止于抽象类和接口。
    针对接口而非实现编程。
    任何变量都不应该持有一个指向具体类的指针或引用。
    任何类都不应该从具体类派生。
    任何方法都不应该覆写他的任何基类中的已经实现了的方法。)
    5.接口隔离原则(ISP)
    不应该强迫客户依赖于它们不用的方法。
    接口属于客户,不属于它所在的类层次结构。
    (多个面向特定用户的接口胜于一个通用接口。)
    ----包内聚原则
    6.重用发布等价原则(REP)
    重用的粒度就是发布的粒度。
    7.共同封闭原则(CCP)
    包中的所有类对于同一类性质的变化应该是共同封闭的。
    一个变化若对一个包产生影响,
    则将对该包中的所有类产生影响,
    而对于其他的包不造成任何影响。
    8.共同重用原则(CRP)
    一个包中的所有类应该是共同重用的。
    如果重用了包中的一个类,
    那么就要重用包中的所有类。
    (相互之间没有紧密联系的类不应该在同一个包中。)
    ----包耦合原则
    9.无环依赖原则(ADP)
    在包的依赖关系图中不允许存在环。
    10.稳定依赖原则(SDP)
    朝着稳定的方向进行依赖。
    应该把封装系统高层设计的软件(比如抽象类)放进稳定的包中,
    不稳定的包中应该只包含那些很可能会改变的软件(比如具体类)。
    11.稳定抽象原则(SAP)
    包的抽象程度应该和其稳定程度一致。
    (一个稳定的包应该也是抽象的,一个不稳定的包应该是抽象的. )
    ----其它扩展原则----
    12.BBP(Black Box Principle)黑盒原则
    多用类的聚合,少用类的继承。
    13.DAP(Default Abstraction Principle)缺省抽象原则
    在接口和实现接口的类之间引入一个抽象类,这个类实现了接口的大部分操作.
    14.IDP(Interface Design Principle)接口设计原则
    规划一个接口而不是实现一个接口。
    15.DCSP(Don't Concrete Supperclass Principle)不要构造具体的超类原则
    避免维护具体的超类。
    16.迪米特法则
    一个类只依赖其触手可得的类。

    (三)23种设计模式 - Pattern.
    创建型
    Abstract Factory(抽象工厂模式) -> (简单工厂模式)
    Factory Method(工厂模式)
    Builder(生成器模式)
    Singleton(单件模式) -> (多例模式)
    Prototype(原型模式)
    结构型
    Adapter(适配器模式)
    Bridge(桥接模式)
    Composite(组合模式)
    Decorator(装饰模式)
    Facade(外观模式,门面模式)
    Flyweight(享元模式) -> (不变模式)
    Proxy(代理模式)
    行为型
    Chain of Responsibility(职责链模式)
    Command(命令模式)
    Interpreter(解释器模式)
    Iteartor(迭代器模式)
    Mediator(中介者模式)
    Memento(备忘录模式)
    Observer(观察者模式)
    State(状态模式)
    Strategy(策略模式)
    TemplateMethod(模板方法模式)
    Visitor(访问者模式)


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/1/10 22:21:00
     
     js57520 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:66
      门派:XML.ORG.CN
      注册:2007/4/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给js57520发送一个短消息 把js57520加入好友 查看js57520的个人资料 搜索js57520在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看js57520的博客2
    发贴心情 
    半懂哈
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/4/27 17:37:00
     
     falcon2222 帅哥哟,离线,有人找我吗?金牛座1982-5-15
      
      等级:大一(高数修炼中)
      文章:22
      积分:148
      门派:W3CHINA.ORG
      注册:2006/2/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给falcon2222发送一个短消息 把falcon2222加入好友 查看falcon2222的个人资料 搜索falcon2222在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看falcon2222的博客3
    发贴心情 
    掌握了一部分```有待加强了``

    ----------------------------------------------
    我行我酷

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/6 14:57:00
     
     caiway 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:8
      积分:112
      门派:XML.ORG.CN
      注册:2006/3/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给caiway发送一个短消息 把caiway加入好友 查看caiway的个人资料 搜索caiway在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看caiway的博客4
    发贴心情 
    不是很懂,学习
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/16 21:35:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 编程心得 』 的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/28 5:35:03

    本主题贴数4,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    56.641ms