一、一致性原则:适用于各类设计场景,好比系统架构设计中操做系统、软件版本都要一致,便于管理便于自动化部署,试想一下,假如大家公司用了各类操做系统、各类服务版本又不一致,天知道怎么管理这些服务器。代码设计中代码风格、注释风格、文件编码等等都要一致,你本身设计的代码风格都不一致想一想几个月后你还能读懂本身的代码了吗?软件设计也要一致,你作一个网站,有的页面是ajax加载的,有的是直接加载的,用户刷新的时候就会有时候跳到这有时候跳到那,体验不好,并且实现的时候代码也很差复用。美工设计也要一致,整个主题是蓝色,忽然来了个红色,太破坏和谐社会了……总之一切都要遵循一致性原则。优秀的一致性设计好比hadoop系列,hadoop、hive、pig、sqoop等等目录结构一致,配置方法也一直,这样用户配的起来很方便,不看文档也知道怎么配了,猜都能猜到,这就是一致性的最高境界。
二、简单性原则:任何东西的设计都要尽可能简单,服装、网站、程序、架构……都不要过分设计,初级人员总以为只有复杂的设计才能体现出他的才能,真正的大师多是已经厌倦设计复杂的东西所以他们设计的东西都很简单。系统越复杂引入bug的可能性就越大,运行效率也越慢,所以老是想一想有没有更简单的方法是追求良好设计的简单途径。
三、层次性原则:模块化也好、面向对象也好、MVC也好,云计算也好,其实本质无非就是分层,划分出良好的层次便于管理、便于维护、便于人类理解,同时附带的好处就是灵活性和复用,分出了层次就能够把各个层次灵活的组合起来而且能够重用某个层。好比如今很火的云,之前服务器和平台都是柔在一块儿的,云把他们分开了 服务器叫IaaS层,平台叫PaaS层,这样当咱们要用数据库的时候不用安了 到IaaS层拿就行了,不用关心它安在哪台服务器上不用本身配集群,由于那一次已经抽象出来了。
四、开放性原则:不但源码要开放、设计也要开放,不用把任何东西设计成固定的,不可变的。世界原本就是变的,没有任何东西是不变的,全部设计的时候就要考虑之后的扩展和变化。闭源的问题就出在他以为本身的代码不会变或者说不能让别人变。
任何优秀的设计跑不出这些原则,不信你想一想spring、 linux、 cloud、mvc、...
linux