刚在逛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. 扩展KMP (ex_KMP)

    一些约定: 字符串下标从1开始 s[1,i]表示S的第一个到第i个字符组成的字符串 解决的题型: 给你两个字符串A,B(A.size()=n,B.size()=m),求p数组 p[i]表示最大的len ...

  2. mybatis-plus批量增加、批量修改样例+建表语句+postman接口

    使用mybatis-plus开发中会遇到数据量多的情况下,插入和修改效率低,主要原因是"新增"和"修改"方法是对一条数据进行处理的,如果有一万条数据就会和数据库 ...

  3. MDC – Text field

    前言 Angular Material 只有 Form field, 但 Material Design 有份 Text field 和 Form field, Form field 是给 check ...

  4. ASP.NET Core – Work with Environment (Development, Staging, Production)

    前言 这篇讲一讲发布和环境 (development, staging, production) 介绍 我的网站是 host 在 Azure 的 Virtual Machine, 跑 IIS, 没有使 ...

  5. ASP.NET Core – Custom Input formatters For Partial Update and Handle Under-posting

    前言 之前的文章有谈过关于 ASP.NET Core 处理 under-posting 的方式. 它会使用 class default value. 许多时候这可能不是我们期望的. 比如当我们想要 p ...

  6. LeetCode题集-4 - 寻找两个有序数组的中位数,图文并茂,六种解法,万字讲解

    题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 算法的时间复杂度应该为 O(log (m+n)) . 作为目前遇到 ...

  7. 报名开启|和你约定在 "Google 应用出海指南针"

    Google 谷歌发布的<2021 移动应用全球化指南>报告中提到,在移动互联网高度渗透的当下,全球用户迸发出来的广泛需求为中国新生代创业者带来了巨大的历史机遇.过去十年,依托于技术和人才 ...

  8. Resource Acquisition Is Initialization

    在 C++ 中,资源获取即初始化(RAII, Resource Acquisition Is Initialization)是一种管理资源的编程惯用法.其核心思想是将资源的获取和释放绑定到对象的生命周 ...

  9. 封装一个Promise.all 的函数

    // 1. 准备三个异步函数 const promise1 = Promise.resolve('prom11ise1'); const promise2 = new Promise(function ...

  10. DDD之领域服务与应用服务

    领域服务: 聚合中的实体没有业务逻辑代码,只有对象的创建,对象的初始化,状态管理等个体相关的代码: 对于聚合内的业务逻辑,我们编写领域服务Domain service 而对于聚合协作以及聚合与外部系统 ...