刚在逛CPyUG时看到了个主题讨论python的八荣八耻,见: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,有读者翻译了下,中心思想如下:简单、清晰,不要过分强调技巧,尽量使用
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:编程“八荣八耻”之我见的更多相关文章

  1. Python之禅+八荣八耻

    Python之禅 (The Zen of Python):是Python语言的指导原则,可以在Python命令行输入import this显示. import this >>> Th ...

  2. python八荣八耻

    Python八荣八耻 以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制 ...

  3. 八荣八耻 IT版

    八荣八耻 IT版以可配置为荣,以硬编码为耻:以系统互备为荣,以系统单点为耻:以随时可重启为荣,以不能迁移为耻:以整体交付为荣,以部分交付为耻:以无状态为荣,以有状态为耻:以标准化为荣,以特殊化为耻:以 ...

  4. Pythonic八荣八耻

    以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制粘贴为耻; 以多态应用 ...

  5. 新DevOps八荣八耻

    昀哥 20181001以随时可扩容可缩容可重启可切换机房流量为荣,以不能迁移为耻. 以可配置为荣,以硬编码为耻. 以系统互备为荣,以系统单点为耻. 以交付时有监控报警为荣,以交付裸奔系统为耻. 以无状 ...

  6. Python学习系列(八)( 面向对象基础)

     Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类 ...

  7. python自动华 (八)

    Python自动化 [第八篇]:Python基础-Socket编程进阶 本节内容: Socket语法及相关 SocketServer实现多并发 1. Socket语法及相关 sk = socket.s ...

  8. 编译opengl编程指南第八版示例代码通过

    最近在编译opengl编程指南第八版的示例代码,如下 #include <iostream> #include "vgl.h" #include "LoadS ...

  9. C#编程总结(八)数字签名

    C#编程总结(八)数字签名 在日常工作中,有很多文件需要领导审阅.签名和盖章,由于公司业务开展,跨地域.跨国业务也日益普遍,领导签名盖章变得很麻烦,开始的时候人们通过邮寄.传真等方式来解决,但是耗费时 ...

  10. IOS编程教程(八):在你的应用程序添加启动画面

    IOS编程教程(八):在你的应用程序添加启动画面   虽然你可能认为你需要编写闪屏的代码,苹果已经可以非常轻松地把它做在Xcode中.不需要任何编码.你只需要做的是设置一些配置. 什么是闪屏 对于那些 ...

随机推荐

  1. 使用 nuxi generate 进行预渲染和部署

    title: 使用 nuxi generate 进行预渲染和部署 date: 2024/9/4 updated: 2024/9/4 author: cmdragon excerpt: 通过 nuxi ...

  2. 【YashanDB数据库】YashanDB如何回收表空间

    确认表空间高水位线,是否有可回收空间. select a.tablespace_name,a.high_water_mark,b.user_bytes,b.total_bytes from (SELE ...

  3. (赠书)国产开源视觉语言模型CogVLM2在线体验:竟能识别黑悟空

    CogVLM2是一款视觉语言模型(Visual Language Model),由智谱AI和清华KEG潜心打磨.这款模型是CogVLM的升级版本,支持高达 1344 * 1344 的图像分辨率,提供支 ...

  4. C++: 虚函数,一些可能被忽视的细节

    C++: 虚函数,一些可能被忽视的细节 引言:关于C++虚函数,对某些细节的理解不深入,可能导致我们的程序无法按预期结果运行,或是表明我们对其基本原理理解不够透彻.本文详细解答以下几个问题:实现多态, ...

  5. windows系统使用UnblockNeteaseMusic解锁网易云音乐灰色歌曲

    使用UnblockNeteaseMusic解锁网易云音乐灰色歌曲 一.问题 用网易云音乐听歌曲,有的曲目听不了,如下: 二.解决步骤 参照:https://github.com/nondanee/Un ...

  6. Angular 18+ 高级教程 – HttpClient

    前言 HttpClient 是 Angular 对 XMLHttpRequest 和 Fetch 的封装. HttpClient 的 DX (Developer Experience) 比 XMLHt ...

  7. SQL Server – Transaction & Isolation 事务与隔离

    前言 上回在谈到 Concurrency 并发控制 时, 有提到过事务的概念. 这篇就补上它具体的实现. 以前写过相关的文章: sql server 学习笔记 (nested transaction ...

  8. Rounding

    前言 以前写过一篇关于 Rouding 的 decimal, double, float, 但有点杂乱, 这篇做一个整理. Why need rouding? 除法会诞生小数. 甚至会诞生无限小数 ( ...

  9. SQL Server – Soft Delete

    前言 Soft Delete 中文叫 "逻辑删", "软删除". 对比的自然就是 Hard Delete. 这篇想聊一聊它的好与坏, 什么时候可以考虑用它. H ...

  10. 算法与数据结构——AVL树(平衡二叉搜索树)

    AVL树 在"二叉搜索树"章节提到,在多次插入和删除操作后,二叉搜索树可能退化为链表.在这种情况下,所有操作的时间复杂度将从O(logn)劣化为O(n). 如下图,经过两次删除节点 ...