开发设计的一些思想总结

尽量预测所有可能面临的问题,按照等级划分并建立蝴蝶效应的树状结构图.

  日志系统是为运行期提供的,当然一些复杂的调试可能用得上.但日志是要提供有用的信息,而非毫无理由的try catch.try catch往往为了你不能预期且容易出问题的地方存在.

面向对象编程的优异在于便捷类重用,核心关键在于面向抽象编程.

越抽象的东西越不易变,所以核心的设计应该抽象出来.

面向过程的优异之处在于方法的重用方法重用,核心关键在于提炼方法策略便于重用

不要做重复的事情.

  工作如此,同样编码设计亦如此.

  当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让他们以一些合适的参数调用这个新的方法。

   当业务流程相同,而具体实现 不一致的时候.我们应该面向抽象

接口的类型分为命令和查询两种方式,不要同时干两件事情.

切勿过度设计,用不上的东西你就不要去做.

不要自我复制

编程设计随谈

  DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让他们以一些合适的参数调用这个新的方法。

面向接口编程 
  这是设计模式中最根本的哲学,注重接口,而不是实现,依赖接口,而不是实现。接口是抽象是稳定的,实现则是多种多样的。以后面我们会面向对象的SOLID原则中会提到我们的依赖倒置原则,就是这个原则的的另一种样子。还有一条原则叫 Composition over inheritance(喜欢组合而不是继承),这两条是那23个经典设计模式中的设计原则。

 命令-查询分离原则 
  查询:当一个方法返回一个值来回应一个问题的时候,它就具有查询的性质; 
  命令:当一个方法要改变对象的状态的时候,它就具有命令的性质;

  通常,一个方法可能是纯的Command模式或者是纯的Query模式,或者是两者的混合体。在设计接口时,如果可能,应该尽量使接口单一化,保证方法的行为严格的是命令或者是查询,这样查询方法不会改变对象的状态,没有副作用,而会改变对象的状态的方法不可能有返回值。也就是说:如果我们要问一个问题,那么就不应该影响到它的答案。实际应用,要视具体情况而定,语义的清晰性和使用的简单性之间需要权衡。将Command和Query功能合并入一个方法,方便了客户的使用,但是,降低了清晰性,而且,可能不便于基于断言的程序设计并且需要一个变量来保存查询结果。

  在系统设计中,很多系统也是以这样原则设计的,查询的功能和命令功能的系统分离,这样有则于系统性能,也有利于系统的安全性。 

面向对象的一些原则问题.

1.高内聚, 低耦合

2.依赖倒置原则(核心抽象不考虑具体实现需要什么,而是提供抽象)

3.接口隔离原则(没有关联的接口就不要放一起了)

4.里氏代换原则(子类能够完成父类的业务)

5.开闭原则(对扩展是开放的,而对修改是封闭的。 ) 宁增勿改

6.单一职责远程(一个类,只做一件事,并把这件事做好,其只有一个引起它变化的原因。)

开发设计的一些思想总结

时间: 2024-11-13 08:11:18

开发设计的一些思想总结的相关文章

[学习笔记]面向对象开发中的一些思想和原则

摘自<Java与模式>作者阎宏 面向对象的可复用设计的第一块基石:开闭原则(一个软件实体应当对扩展开放,对修改关闭) "开-闭"原则的手段和工具: 1)里氏代换原则:任何基类出现的地方,子类一定可以出现: 2)依赖倒转原则:要依赖于抽象,不要依赖于实现: 3)合成\聚合复用原则:要尽量使用合成\聚合,而不是继承关系达到复用的目的: 4)迪米特法则:一个软件实体应该与尽可能少的其它实体发生相互作用: 5)接口隔离原则:应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口

APP开发设计应以人为本!浅谈APP交互设计原则

为什么APP开发设计需要原则?设计原则其实就是对一些设计过程中基于人类的认知规律对设计做出的一些指导性原则,并且对已经成为行业共识的设计经验做个总结,用来指导设计师界定问题.提高效率. 先就APP开发设计 http://www.czwew.com 常州紫竹云科技产品经理分享交互设计的时候最为大家所认可的几条设计原则:可学习性.一致性.简洁性.流畅性.及时反馈.除了这么六个?还有其他的吗?你放心,如果需要还有更多. 一.经常用的设计原则有哪些? 1.可学习性   目标用户在已有的知识和经验基础上,

【Python之旅】第八篇:开发监控软件的思想与流程

最近两周时间里,一直都在学习监控软件的开发,虽然是简版的,可是在这个过程当中,对于要开发一个监控软件的大概框架和流程还真的学习了很多东西,而且也想,这些知识实在是很难通过看文章或者是书籍能学习得到,只有自己亲自去实践过,我想才可以慢慢体会到这中间的不易吧.而通过这样一个过程,发现自己在这方面的思想枷锁也慢慢地打开,也才慢慢体会到那种乐趣吧.这里,真的是非常感谢Alex老师非常精彩的讲解. 监控软件的大概流程如下:     当然,实际中学习的过程中并没有去监控MySQL或者是ngnix,而只是监控

Java-单机版的书店管理系统(练习设计模块和思想_系列 四(2) )

说明: 本博客为补全上篇-Java-单机版的书店管理系统(练习设计模块和思想_系列 四(1) )的,所以如果不懂,请先看上一篇. 本系列都是我一步一步学习来的, 所以,可能比较适合初学设计模块的人来学. 现在补全我目前写的所以代码: 公共类: 用户类型枚举:UserTypeEnum类 package cn.hncu.bookStore.common; /** * 功能:用户类型的枚举!<br/> * 定义在公共模块.<br/> * 变量:<br/> * ADMIN(1,

iOS类的合理设计,面向对象思想

每天更新的东西可能有反复的内容.当时每一部分的知识点是不同的,须要大家认真阅读 这里介绍了iOS类的合理设计.面向对象思想 main.m #import <Foundation/Foundation.h> #import "Iphone.h" int main(int argc, const char * argv[]) { Iphone * phone = [Iphone new]; phone->_color = IphoneColorWhite; phone-&

linux应用开发-设计动态库

linux应用开发-设计动态库 一 制作动态库 1. gcc –c mylib.c –o mylib.o 2. gcc -shared -fPIC mylib.o -o libmylib.so  3. 将制作好的libmylib.so 复制到/usr/lib 4 -fpic 使输出的对象模块是按照可重定位地址方式生成 5 -shared 指明产生动态链接库. 二 基本概念见上一章设计静态库

linux应用开发-设计静态库

linux应用开发-设计静态库 一 应用程序 函数库(用户)和系统调用(linux内核) 二 库分类 1 静态链接库(*.a) 一个程序使用一个函数库 2 动态链接库(*.so) 多个程序可以使用同一个函数库,减少程序的大小 3 静态库比动态库大 三 制作自己的静态库 1 gcc -c mylib.c -o mylib.o 2 ar cqs libmylib.a mylib.o 3 将做好的libmylib.a 复制到/usr/lib目录下 四 使用自己创建的静态库 1 linux默认链接动态库

web开发设计--JS的innerHTML/display属性

1.innerHTML 属性 innerHTML 属性用于获取或替换 HTML 元素的内容. 语法: Object.innerHTML 注意: 1.Object是获取的元素对象,如通过document.getElementById("ID")获取的元素. 2.注意书写,innerHTML区分大小写. 我们通过id="con"获取<p> 元素,并将元素的内容输出和改变元素内容,代码如下: <!DOCTYPE HTML> <html>

高端智能计算硬件平台开发设计 ——北京太速科技有限公司

北京太速科技有限公司,公司成立于2010年,总部位于北京亚运村.致力于高端智能计算硬件平台开发设计. 公司全力服务于研究所.高校.大型企业的科研硬件平台开发,以PMP项目管理流程实现公司知识管理.风险控制.工艺优化.实现项目的费用.进度.范围.质量的完美统一.以先进制造理念,完善的设计工艺流程和稳健的过程控制,为客户实现稳定.可靠的硬件设计服务.公司长期积累形成的智能图像计算平台.软件无线电处理平台.智能工业设备.服务器加速计算卡已经广泛运用于各领域,深受专家们的好评.公司技术骨干主要毕业于北京