刚在逛CPyUG时看到了个主题讨论python的八荣八耻,见:[http://bit.ly/4jeBor](http://bit.ly/4jeBor), 主题内容如下:
以动手实践为荣,以只看不练为耻。
以打印日志为荣,以单步跟踪为耻。
以空白分隔为荣,以制表分隔为耻。
以单元测试为荣,以手工测试为耻。
以代码重用为荣,以复制粘贴为耻。
以多态应用为荣,以分支判断为耻。
以Pythonic为荣,以冗余拖沓为耻。
以总结思考为荣,以不求甚解为耻。
总结地相当精辟啊,下面谈下我个人的理解:
1、以动手实践为荣,以只看不练为耻。
对于编程这活来说,这绝对是真理中的真理,任何编程语言学习均是如此,动手敲一下,编译、调试一把,才能对语言的细节有更深入的了解。好多东东看似简单,做起来可能更本不是那么一回事。所以,动手,必须的。
2、以打印日志为荣,以单步跟踪为耻。
这句严格来说个人不太赞同,对于一个成熟的软件,记录日志是最基本的,但在开发过程中,仅仅通过日志来分析并不是一个非常好的办法,通常单步跟踪比日志能更快地找出缺陷所在。
3、以空白分隔为荣,以制表分隔为耻。
绝对支持,我所在公司这条是最基本的编程规范,像自己平时用Source Insight编码,将TAB链设置为4个空格,好多的IDE或编辑器均有此选项设置,所以这个工具可以帮助我们解决。
4、以单元测试为荣,以手工测试为耻。
这句我觉得没有写好,这里的手工测试定义不明确,单元测试个人通常使用单步跟踪,这脱离不了手工,与之相对的就是自动化测试,我理解这里说的是不是TDD(敏捷中的测试驱动开发)。不太明白。
5、以代码重用为荣,以复制粘贴为耻。
这句真理,复制粘贴很容易造成好多冗余代码,使用代码越来越不好维护。
6、以多态应用为荣,以分支判断为耻。
做为面向对象的语言,合理地运用多态无可厚非,因为个人工作使用C,对存在多个分支判断时,通常会使用驱动表,这也不失为一个好办法。
7、以Pythonic为荣,以冗余拖沓为耻。
什么是Pythonic呢,看这里:[http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0](http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0),有读者翻译了下,中心思想如下:简单、清晰,不要过分强调技巧,尽量使用 Python 已经提供的功能以及符合Python的思维方式。目前个人离这个境界还相距甚远啊。
8、以总结思考为荣,以不求甚解为耻。
与1一样,真理中的真理,不仅编程,凡事均应如此啊。
最后,附一个python的禅:
import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>>
- 前言
- Python:实现文件归档
- Pyhon:按行输出文件内容
- Python:读文件和写文件
- Python:实现一个小算法
- Python:通过命令行发送新浪微博
- Python:通过摄像头实现的监控功能
- Python:通过摄像头抓取图像并自动上传至新浪微博
- Python:简单的摄像头程序实现
- Python:日志模块logging的应用
- Python:操作嵌入式数据库SQLite
- Python:将句子中的单词全部倒排过来,但单词的字母顺序不变
- Python:语音处理,实现在线朗读RFC文档或本地文本文件
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法
- Python:使用matplotlib绘制图表
- Python:使用pycha快速绘制办公常用图(饼图、垂直直方图、水平直方图、散点图等七种图形)
- Python:使用pycha快速绘制办公常用图二(使用样式定制个性化图表)
- Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中
- Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性
- Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性(二)
- Python:通过远程监控用户输入来获取淘宝账号和密码的实验(一)
- Python:通过远程监控用户输入来获取淘宝账号和密码的实验(二)
- Python:通过自定义系统级快捷键来控制程序运行
- Python:通过自定义系统级快捷键来控制程序开始或停止记录日志(使用小技巧解决一个貌似无解的问题)
- Python:一个多功能的抓图工具开发(附源码)
- Python:程序发布方式简介一(打包为可执行文件EXE)
- Python:新浪微博应用开发简介(认证及授权部分)
- Python:程序最小化到托盘功能实现
- Python:实用抓图工具开发介绍(含需求分析、设计、编码、单元测试、打包、系统测试、发布各环节)
- Python:桌面气泡提示功能实现
- Python:未来三个月的python学习计划
- Python:pygame模块及SDL库简介
- Python:获取新浪微博用户的收听列表和粉丝列表
- Python:pygame游戏编程之旅一(Hello World)
- Python:pygame游戏编程之旅二(自由移动的小球)
- Python:pygame游戏编程之旅三(玩家控制的小球)
- Python:pygame游戏编程之旅四(游戏界面文字处理)
- Python:pygame游戏编程之旅五(游戏界面文字处理详解)
- Python:pygame游戏编程之旅六(游戏中的声音处理)
- Python:pygame游戏编程之旅七(pygame基础知识讲解1)
- Python:编程“八荣八耻”之我见
- Python:脚本的几种执行方式
- wxPython:简单的wxPython程序
- wxPython:简单的wxPython程序的另一种写法
- wxPython:应用程序对象介绍
- wxPython:输出重定向
- wxPython:关闭wxPython程序
- wxPython:Frame类介绍
- wxPython:面板Panel的使用
- wxPython:工具栏、状态栏、菜单实现
- wxPython:消息对话框MessageDialog
- wxPython:文本对话框TextEntryDialog
- wxPython:列表选择框SingleChoiceDialog
- wxPython:事件处理介绍一
- wxPython:事件处理介绍二
- wxPython: 简单的绘图例子
- wxPython:状态栏介绍
- wxPython:菜单介绍
- wxPython:文件对话框wx.FileDialog
- wxPython:颜色选择对话框wx.ColourDialog
- wxPython:布局管理器sizer介绍
- wxPython:启动画面SplashScreen介绍
- wxPython:绘画按钮BitmapButton介绍
- wxPython:进度条Gauge介绍
- Python: 发送新浪微博(使用oauth2)
- Python:读取新浪微博收听列表
- Python:DNS客户端实现