关于编程编程规范以及开发目录的规范性

如何规范自己的编程以及软件开发目录(一)

python 为什么要做这些?

可想而知,随着你的编码慢慢的变多,内容也会变得越来越多;所以,不用想的,规范化自己的编程以及软件开发目录这十分的重要;那么如何做这些东西了?我们作为初学者,目的就是为了遵循代码规范,这是最基本的,而且以后工作了,每个团队的规范还不一样,尽可能的与自己的团队保持一致,目前初学者按照官方要求即可。只要在以后多观察代码风格,多看几次就可以学会了。

python中如何规范自己的编程?

关于注释

注释不止为了自己看清楚自己的代码,而且还是为以后的开发人员做准备的,其实一段时间后,当程序作出一定的修改后或者以后改正某个bug的时候,可能未来的我们都会忘记相关的细节,所以此时的注释相当的重要。

每条注释是以(#)开始,一直到该行末尾结束,我们可以在注释中放任何东西,因为python会无视它的存在。为了更好的注释,我们给出以后的几个规范:

(1)假设编程读者的水平与你一样(不要去解释什么是字符串,什么是int类型等)

(2)不要去注释那些毫无意义的东西

count = count +1   # add one  to count

(3)很多程序员会在代码上写上写上一些以“TODO”或者“FIXME”开始的注释,目的是为了处理或清除一些未完成的任务

(4)如果你在编写某段程序的时候绞尽脑汁的思考,应该编写注释,以后别人在思考你这段代码的时候就不比较绞尽脑汁的思考这个地方。尤其重要的地方是,如果你在开发程序或者编写某个函数时需要使用要点来描述,尽可能的描述详细一点。在开                       发工作结束的时候,你可以直接将要点全部保留下来做注释。

(5)同样,如果某个bug很难查明,或者其修改方法比较复杂,那么你就需要对其进行注释对其进行解释。如果不这么做,那么其他负责这部分的程序员就可能认为没有必要这么麻烦,修改回原来的模样,从而使你的心血付诸东流。

(6)如果我们需要大量的注解去解释某部分代码,那么,就需要我们自己去整理这部分代码。 比如说,如果我们需要对一个函数的15个列表进行注解,那么我们就应该将函数拆分成更小的代码块,每个注释只处理几个列表。

(7)过时的注释还不如不注释。因此修改某段代码后,一定要检查相关的注释,并及时的更新自己的注释,以便于准确适当的描述代码的功能。

(8)注释不是越多越好,弄得全篇都是注释,却很少看见代码,这样就曲解了注释意思了

所以说,一定要养成良好的注释代码的习惯,边写代码边注释,及时的记录下来你的思路,举个例子,代码是鱼,注释就是水,有了正确的注释,鱼才能更好的生存。还有就是多提高自己对代码的解释能力,用精炼的语言表达出代码的核心价值所在,那么你写的代码就是成功的。

下面举个简单的例子:

def find_two_smallest(L):
    ‘‘‘Return a tuple of the indices of the two smallest values in list L‘‘‘
    smallest = min(L)
    min1 = L.index(smallest)
    L.remove(smallest)
    next_smallest = min(L)
    min2 = L.index(next_smallest)
    L.insert(min1,smallest)    #为了获取第二个最小值在原始列表中的索引,我们还需要根据实际情况给min2加1
    if min1<=min2:
        min2+=1
    return(min1,min2)

python中的特殊注解

比如,python中有一行声明python编码格式的单行注解,这里指定的文件的编码为utf-8。这行特殊注解只能放在文件的第一行或者开头。

#_*_coding:utf-8_*_

还有一种是说明脚本语言是python的,是要用/usr/bin下面的程序(工具)python,这个解释器,来解释python脚本,来运行python脚本的。

#!/usr/bin/python

规范命名变量

名字不能乱起,如果大家都是各自的想法,那么谁也看不懂谁的东西。因此,这里说一下变量命名的规范以及注意事项。

1.变量定义规则

  •   变量只能是字母,数字,下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 关键字不能生成变量名

2.变量规范用名注意事项

  •    变量名不能太长
  • 变量名词不达意思
  • 变量名不能为中文、拼音

3.总体命名规则

  •   尽量不要使用小写字母‘l’,大写字母‘o’等容易混淆的字母
  • 模块命名尽量的短小,全部使用小写的方式,可以使用下划线
  • 包命名尽量短小,全部使用小写方式,不要使用下划线
  • 类的命名使用CapWords的方式,模块内部使用的类用_CapWords的方式。
  • 异常命名使用CapWords+Error后缀的方式。
  • 全局变量尽管只在模块有效,类似C语言的static。实现的方法有两种,一种是__all__机制,另外一种是前缀一个下划线_name
  • 函数命名使用全部小写的方式,可以使用下划线
  • 常量命名使用全部大写方式,可以使用下划线
  • 类的属性(方法和变量)命名使用全部小写方式,可以使用下划线
  • 类的属性有三种作用域public,non-public和subclass API,可以理解为C++里面的public,private,protected,none-public属性前,前缀一条下划线
  • 类的属性若与关键字名字冲突,后缀一下划线,尽量不要使用缩略等其他方式
  • 为了避免与子类的属性命名冲突,在类的一些属性前,加入两条下划线。比如类Foo中声明__a,只能通过foo.foo__a,避免歧义,如果子类也叫foo,那就无能为力了
  • 类方法的第一个参数必须是self,静态方法的而第一个参数必须是cls

关于排版的问题

一、代码排版

  • 缩进,四个空格的缩进(编译器都能完成这份工作),不使用tab以及空格键,混合使用也不建议
  • 每行最大长度79,换行最好使用反斜杠,最好使用圆括号。换行点要在操作符的后面敲回车
  • 类和top-level函数定义之间空两行;类中方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要在空行。

二、文档排版

  • 模块内容的排序:模块说明和docstring---》import-----》globals和constants---》其他定义。其中import又按标准,三方以及自己编写的顺序进行排放,之间空一行。
  • 不要在一句中引用多个库,比如import os,sys等
  • 如果采用import XX from XX引用库,可以省略‘module.’但是可能出现命名冲突,这时候就需要使用import XX

三、空格的使用

总体原则,避免不必要的空格

  • 各种有括号前不必加空格
  • 逗号、冒号、分号前不必加空格
  • 函数的左括号前不必加空格,如fun(1)
  • 序列的括号内不必加空格,如list[1]
  • 操作符左右各加一个空格,不要为了对其增加空格。
  • 函数默认参数使用的赋值符左右省略空格
  • 不要将多句语句写在同一行,尽量不要使用‘;’
  • if/while/for语句中,及时只有一行,也要换行

最后的几点建议

  • 编程中考虑到其他python实现效率的问题,比如运算符‘+’在CPython(Python)中的运算效率很低,但在Jython中的运行效率很低,所有,应该使用.join()的方式。
  • 尽量不要使用is或者is not 去替代‘==’
  • 使用基于类的异常,每个模块或者包都有自己的异常类,该异常类继承于Exception
  • 异常中不要裸露except,而是except后面要跟具体的exceptions。
  • 异常中try的代码尽可能的少。比如

    try:
    value = collection[key]
    except KeyError:
    return key_not_found(key)
    else:
    return handle_value(value)
    
    要优于
    
    try:
    # Too broad!
    return handle_value(collection[key])
    except KeyError:
    # Will also catch KeyError raised by handle_value()
    return key_not_found(key)
  • 使用endwith与startwith代替切片对于列表进行检查,比如说,

    Yes:  if foo.startswith(‘bar‘):
    优于
    No:  if foo[:3] == ‘bar’
  • 使用isinstance()比较对象类型:
    Yes:  if isinstance(obj, int):
    
    优于
    
    No:  if type(obj) is type(1)
  • 判断序列空或者不空,有如下规则:

    Yes:  if not seq:
    if seq:
    
    优于
    
    No:  if len(seq)
    if not len(seq)
  • 字符串不要以空格结尾
  • 二进制判断使用if  boolvalue的方式

原文地址:https://www.cnblogs.com/liuxinkai94/p/10795107.html

时间: 2024-10-29 08:55:15

关于编程编程规范以及开发目录的规范性的相关文章

JAVA语言编程格式规范

目   录 1. 前言 2. 试用范围 3. JAVA命名规范-- 3.1 公共约定 3.2 Java文件.包 3.3 类.接口命名规范 3.4 方法命名规范 3.5 常量 3.6 变量和参数 3.7 组件/部件 3.8 集合 3.9 神秘的数 3.10 其他 3.11 Java异常 3.12 数组命名 3.13 数据库表命名规则 3.14 数据库字段命名规则 3.15 JSP文件命名 3.16 Servlet类命名 4. 书写格式规范 4.1 缩进 4.2 空格 4.3 对齐 4.4 空行 4

揭开SAP Fiori编程模型规范里注解的神秘面纱 - @OData.publish

今天是2020年2月1日鼠年大年初八,这是Jerry鼠年的第8篇文章,也是汪子熙公众号总共第207篇原创文章. Jerry的前一篇文章 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @ObjectModel.readOnly工作原理解析,给大家分享了@ObjectModel.readOnly这个注解对应的Fiori UI和ABAP后台的工作原理. 今天我们继续研究另一个注解@OData.publish. 在SAP官网的ABAP Programming Model for SAP Fio

Python网络编程实战之一个人开发环境搭建

本节介绍在Debian下利用Python进行网络编程时,需要安装的一些实用的工具包. 0x01  安装开发必备软件包 $ sudo aptitude -y install build-essential     ##"-y"的作用是:在安装过程中,如果遇到Y或N的提问,一律以Yes作为默认的答案 $ sudo aptitude -y install libsqlite3-dev $ sudo aptitude -y install libreadline6-dev $ sudo apt

Spark2.0从入门到精通:Scala编程、大数据开发、上百个实战案例、内核源码深度剖析视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

VB 核心编程及通用模块开发 笔记1

前言:学习任何编程语言.编程工具的目的不外乎解决生活问题,能够快速.高效解决问题的方式就是不错的方式,至于选择什么“工具”,众位看官看着办,本人虽然有过3年vb开发经验,但是一直没有深入学习,现已购买 <张宁著 老兵新传  核心编程及通用模块开发>,深入学习vb开发,继续将vb发扬光大. 一.知识准备 本章从API函数开始介绍vb下如何使用api函数,模块.类模块的编写.主要还是阐述的一种思想,通用模块开发,编写的模块能够通用,多次使用,尽量要降低错误,以达到重复利用目的,从通篇介绍来看,以后

(转) 三种编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法)

三种编程命名规范(匈牙利命名法.驼峰式命名法.帕斯卡命名法) 1 . 匈牙利命名: 开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写. ex: int iMyAge; "i"是int类型的缩写: char cMyName[10]; "c"是char类型的缩写: float fManHeight; "f"是float类型的缩写: 其他: 前缀类型 a b by c cb cr cx,cy dw fn h i l l

让编程菜鸟爱上iPhone开发1-Swift+iOS8版

对iPhone开发感兴趣的初学童鞋们奉上一篇认可度较高的iPhone开发教程,助你轻轻松松提高自己的职业修养. 提醒:本文是系列教程中的开篇,不适合程序猿出身的童鞋!目的只是让初学者.产品策划,设计或管理人员了解iPhone开发的基础知识. 主要素材和示例项目来源:Ray Wenderlich store 特别说明:不适合程序猿出身的童鞋!目的是让初学者.产品策划,设计或管理人员了解iPhone开发的基础知识. 适合看本系列教程的对象: 1.从未学过编程,或者对Swift语言一无所知,但要懂一些

Java编程风格规范(Google )

Google Java编程风格指南 前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格. 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准.然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见. 1.1 术语说明 在本文档中,除非另有说明: 术语class可表示一个普通类,枚举类,接口或是anno

Python模块:Re模块、附软件开发目录规范

Re模块:(正则表达式) 正则表达式就是字符串的匹配规则 正则表达式在多数编程语言里都有相应的支持,Python里面对应的模块时re 常用的表达式规则:(都需要记住) " . "   #  默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 " ^ "  #  匹配字符开头,若指定flags MULTILINE,这种也可以匹配上("^a","\nabc\neee",flags=re.MUL