十分钟教你如何构思代码

原创 2011年01月23日 10:57:00

 

  序:当你拿到一个需求,准备写一个5万行以上的程序的时候,你是否曾经觉得不知道从何下手?是不是有种困难重重的感觉?是否写完了一个函数,又觉得不是自己期望的用途?看起来都不是很复杂,可是一做起来,却又不知道为什么变得那么复杂了。如果你刚好遇到了这样的问题,请花上十分钟,认真读完本文,或许能解决掉您的一些疑问。

 

  5年前,有一位对编码规范很有研究的同事曾经告诉过我这样一个秘诀“把函数的功能单一化”,是的,这是一个多么朴实确是无比实用的一句话啊!他说:“我写过一个用来统计代码的小工具,我很快就从网上知道了文件系统的接口如何使用,我觉得这是一件非常简单容易的事儿,于是我很快就开始了编码。我写了一个又一个函数,可是越来越发现我对于注释,函数域的统计出了问题,而且很难调试,很复杂。我发现很多情况如"/*, /**,///*,/*//"等我怎么都无法处理好,让我很懊恼失望,我几乎迷失了方向,不知怎么改是好了,因为我改好了一个问题就会引发一个新的问题出现。后来我就发现了这一个秘诀,把函数的功能单一化,我很快就解决了所有的问题。因为我不再是用很多复杂的逻辑去处理所有的情况了,我设计了一个仲裁和几个单一化的功能,用仲裁去判断要用那个小的功能来处理当前的字符,然后由各个单一化的功能去处理,我发现各种复杂的逻辑因此也都消失的无影无踪了。”

 

  是的,把函数的功能单一化,常常是我们解决复杂逻辑的万灵丹。这点,曾经开发过"BitCommet"的Bram Cohen,也在他的博客中说过类似的话,“Use less code”,代码数量少,你维护的工作将会变得简单,他说到:“The less code you have, the less there is to maintain. You shouldn't slavishly count characters or lines of code in your program and reduce it at all costs, but generally speaking, less is better.   ”他告诉我们“generally speaking,less is better”是的,简单的说,越少越好。函数的复杂度将随着代码数量的上升而增加,从而使维护变得更加复杂,而难以持续。

 

  MIT/Stanford 风格的设计中第一条:“Simplicity-the design must be simple, both in implementation and interface. It is more important for the interface to be simple than the implementation. ”而Richard Gabriel在他的worse is better一文中表示了反对这样的观点,他说:“Simplicity-the design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface. Simplicity is the most important consideration in a design.”无论是接口与实现的简单化,都被他们如此的看重。Richard Gabriel认为简单将会使得解决冲突变得容易的同时移植性也得到大大的提高。

 

  没错,要让复杂的程序变得简单的一个重要的秘诀,就在于让每个函数变得简单,请你想想,你是否做到了一下几点呢:

   1.  接口的简单化

   2.  实现的简单化

   3.  代码数量最少化

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

构思编辑器教你如何不用代码排版出好看的微信公众号文章

作为微信公众号运营人员之一,如何简单的进行微信文章内容编辑很重要。其中最主要的在于如何编辑出优美的文章并且文章的整体布局和排版都很美观。然而不是很多人都懂得如何使用代码去完成这些要求,那么不懂代码的运...

微信编辑器——构思编辑器教你如何学好图文排版

对于很多运营微信公众号的人来说,如何运营好一个微信号并且随着运营时间的推移,公众号内的粉丝增加量以及文章的阅读量成为了很多运营者最为关心的问题。每每看到很多运营账号的文章可以展现出很多图文并茂、排版整...

每天十分钟教你sql语句

  • 2013-05-03 17:35
  • 333KB
  • 下载

three.js入门基本知识,教你十分钟做出一个旋转的图形

three.js入门基本知识,教你十分钟做出一个旋转的图形。three.js是一款webGL框架,由于其易用性被广泛应用。如果你要学习webGL,抛弃那些复杂的原生接口从这款框架入手是一个不错的选择。...

十分钟教你学会zookeeper安装和集群搭建(伪集群 )

1. zookeeper介绍 ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高...

十分钟教你玩转Android动画【Android】

动画效果编程基础--Animation 动画类型 Android的animation由四种类型组成 XML中  alpha 渐变透明度动画效果 sc...

不敢说不之—— 十分钟学会搭建微信和微博两种主流框架(纯代码)

介绍 一微信主流框架的搭建 1微信主流框架的实现思路 2微信主流框架的代码实现 二微博主流框架的搭建 1微博主流框架的实现思路 2微博主流框架的代码实现

iOS:手把手教你发布代码到CocoaPods(Trunk方式)

概述 关于CocoaPods的介绍不在本文的主题范围内,如果你是iOS开发者却不知道CocoaPods,那可能要面壁30秒了。直奔主题,这篇文章主要介绍如果把你的代码发布到CocoaPods代码...

ios 8行代码教你搞定导航控制器全屏滑动返回效果

一、自定义导航控制器 目的:以后需要使用全屏滑动返回功能,就使用自己定义的导航控制器。 二、分析导航控制器侧滑功能 效果:导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功...

教你如何用代码从程序里面打开 控制面板【2013.10.9 小记】

每天记录help: 1. ShellExecute打开控制面板 ShellExecute(NULL,"open","rundll32.exe","shell32.dll,Control_RunD...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)