编程思想
Posted stevenhusir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程思想相关的知识,希望对你有一定的参考价值。
1.抽象
萃取出主要特征,而摒弃次要不相关的特征;无需了解物质的内部实现细节而基于其提供的抽象来构造应用;声明与实现相分离。计算机科学中的抽象俯拾即是,比如汇编语言是对机器硬件的抽象,编译器是对高级程序语言的抽象,进程是对程序一次执行的抽象,线程是对任务执行流的抽象等。
? 阅读链接: 《抽象, 编程之道》 :http://www.cnblogs.com/lovesqcc/p/4038408.html
2.封装
由抽象直接引出的重要概念就是封装。函数是算法的良好封装,对象是状态与逻辑的良好封装, 封装是实现软件模块化、提高软件可维护性的重要技术。封装是实现许多软件工程思想的溯源。比如,隔离变化, 将变化的影响局部化等。JAR 包即是 Java 平台实现可复用的库、框架的封装。
3.复用
不要重复发明轮子。复用是软件工程领域的重要技术。从 LinuxShell、标准库函数,STL,JDK这样的代码级复用,到 Struts, hibernate 的应用框架复用, 以及 设计模式的复用, 解决方案的复用, 复用无处不在。 复用是站在巨人的肩膀上, 能够直接利用专家级的知识和经验,何乐而不为?
? 新的更优的解决方案往往是现有可复用方案的组合创新。
? 阅读链接:《编程语言与可复用性》 :http://www.cnblogs.com/lovesqcc/p/4333392.html
4.分层
将系统分解为多个层次,精确定义每层所提供的服务及层次之间提供的服务接口;处于某个层次的层依赖于下一层提供的服务,并为上一层提供服务;各层之间无需知道彼此的细节。典型例子是网络协议栈及操作系统虚拟机的概念;实际工程项目中的 View - Model - Bussiness - Service - Controller 。《JavaWeb应用开发架构浅谈》阐述了分层思想在 Web 软件架构设计中的实际表现形式。
阅读链接: 《JavaWeb应用开发架构浅谈》:http://www.cnblogs.com/lovesqcc/p/4037745.html
5.模式
在《水平思考的力量》一书中谈到,大脑的运作机制主要是模式机制,即通过模式存储、识别、连接和提取来实现思考。生活中无时不刻使用着模式,模式提高了人们的适应能力和反应能力。设计模式是模式思想在软件设计中的运用,用于构造可扩展性、可维护性良好的软件。JavaIO 是使用装饰器模式实现的优雅而扩展性良好的 IO 框架;《使用规则引擎Drools计算圆周率PI》使用了策略模式去计算 PI, 在实际应用的时候可以通过参数和需要来选择任意一种实现。
阅读链接: 《javaIO框架小析》:http://www.cnblogs.com/lovesqcc/p/5201929.html
6.缓存
将一部分已求解值存储起来以备后用;或者将一次性存储一部分数据(包括但不仅含有当前所需数据),以便之后紧随着访问。动态规划法是使用缓存思想的典型例子。
? 存储器高速缓存是缓存思想的又一典型例子,与程序局部性原理密切相关。要想达到更好的程序性能,则必须采用一定手段,使得访问数据的顺序与数据在存储器中的存储顺序保持一致,这样才能提高命中率,防止大量的缺页中断带来的低效。在实际应用中,分布式缓存、内存缓存也是提升系统查询性能的关键技术手段。
7.模板
通过替换静态模板中的动态变量, 从而生成动态文本的思想和技术。WordPress 是模板思想的生动应用,可以定义不同层次的不同优先级的模板,然后将内容应用其上; Velocity 是一款常用的 Java 模板引擎,可以生成服务端页面。《python实现动态更新远程机器列表的SSH登录脚本》展示了模板的最简单应用和实现:定义一个静态模板脚本,里面含有一些字符串变量;然后使用程序生成的内容填充字符串变量,从而生成最终的脚本。《三个 DAL 相关的Java代码小工具》第二个工具,使用模板和正则替换,从 DO 类自动生成 DataTransfer 类源文件。模板通常会与正则表达式匹配和替换联合使用。
8.多态
通过继承与混入的方式,使得子类可以灵活地继承或重写父类的行为; 同一个方法签名可以表现出不同的行为。Scala Trait 语言特性体现了混入与多态的思想。
阅读链接: 《Scala-Trait:混入与多态》:http://www.cnblogs.com/lovesqcc/p/5327435.html
9.排序
排序无疑是计算领域中非常重要而又实用的技术,也是必知必会的技能之一。选择排序、插入排序、冒泡排序、归并排序、快速排序、堆排序、二叉排序、桶排序、计数排序、多关键字排序、位图排序,任君选择。在实际应用中,往往要根据对象的某个属性进行排序, 需要编写比较器函数,或是实现比较器类, 比如 Java 的 Comparator, Comparable , C quicksort 里的比较函数。通常会选择快速排序、归并排序、堆排序。
10.自动化
自动化使得人从繁琐易错的事情中解脱出来, 从事更具有创造性的工作, 使人与计算机并行协作, 在计算机干活的时候人休息一会也不耽搁事情。善于发现可自动化的流程、规律、事务, 尽可能使用程序自动化和简化手工活, 减少或消除繁琐易错的手工操作。
? 阅读链接:《Debian6.0.5 squeeze 一站式开发环境安装脚本》http://www.cnblogs.com/lovesqcc/archive/2012/09/16/4037802.html
11.工具与快捷方式
工欲善其事,必先利其器。建立适合自己的快捷键是提升效率的有力途径之一。Linux 命令 ln 可以用于建立文件或程序的快捷方式。
阅读链接: 《构建自己的快捷键设置》, 《VIM 编辑器笔记》
12.代码质量
能够编写出品质过硬的可信赖的程序也是必须掌握的技能之一。《如何编写可信赖的代码》给出了编写可信赖程序的若干实用建议; 《Web服务端软件的服务品质概要》给出了评估服务端软件的各种质量属性;《一个图片文件批量重命名工具的质量改善过程》通过一个示例阐述如何逐步地提升程序的质量。
学到的东西就记录下来, 事无巨细, 积微至著。 不定期地总结、归纳和回顾已经学到的知识和技能
以上是关于编程思想的主要内容,如果未能解决你的问题,请参考以下文章