程序员入职第一天就翻车了

前言

前段时间,和之前公司的同事闲聊的时候,聊到了一个有趣的话题,想分享给大家看看。

他说最近有一个小伙伴,刚刚毕业。整个技术学习的还是非常不错的,也成功的面试过了。

但是,没想到上班的第一天就来了一个小翻车。在这里就会有疑问了,难道是技术不达标嘛?不不不。难道是遇到了BUG没有解决出来?也不是,翻车的原因就是它写的代码,让公司里面的前辈看了显得太业余了,用行话说就是代码不规范。

代码规范,在平常在学习的时候大家可能会忽略。有很多的初学者也没有怎么注意。但是到公司里面我们才发现,代码规范显得尤为重要。
在这里插入图片描述

通过两段代码对比你会发现,它们所包含的代码时完全相同的。但很明显,右侧的代码编写格式看上去比左侧的代码段更加规整,阅读起来也会比较轻松畅快。因为它遵循了最基本的 Python 代码编写规范。

代码规范体现的是你作为一名真正的开发工程师的功底,代码都写的不规范你说你技术不错,鬼才信呢!

在公司中一般都是团队开发,团队开发的时候,难免你的代码同事会进行阅读。这个时候,代码不规范可以想象一下这得有多尴尬。就好比一个高材生,写出的字和一年级小学生一样。

细节决定成败!!!

那什么是代码规范呢?代码规范也就是指在编写代码时,我们需要去遵循一些通用的编写方式或编写风格。

注意,并不做强制性(也就是说不按规范写并不会报错),但是却是程序员自我修养的必学之技。

那今天主要来聊聊 Python 编码风格指南——PEP8

一 、代码编排

Python 在语法上使用 缩进 来确定代码块的开始和结束,对于每一级缩进,都应该是 4个空格。当然,在 Pycharm 当中,我们可以设置使用 tab 键来进行缩进。

那需要注意,缩进本身是强制性的,但是空格数量实际上语法并没有做限制。只不过同级代码缩进空格一致即可。

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

  • 缩进。4个空格的缩进(编辑器都可以完成此功能),不要使用Tap,更不能混合使用Tap和空格。

  • 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。

  • 类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。

  • 各种右括号前不要加空格。

  • 逗号、冒号、分号前不要加空格。

  • 函数的左括号前不要加空格。如Func(1)。

  • 序列的左括号前不要加空格。如list[2]。

  • 操作符左右各加一个空格,不要为了对齐增加空格。

  • 函数默认参数使用的赋值符左右省略空格。

  • 不要将多句语句写在同一行,尽管使用‘;’允许。

  • if/for/while语句中,即使执行语句只有一句,也必须另起一行。

二 、文档编排

  • 模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义。其中import部分,又按标准、三方和自己编写顺序依次排放,之间空一行。

  • 不要在一句import中多个库,比如import os, sys不推荐。

  • 如果采用from XX import XX引用库,可以省略‘module.’,都是可能出现命名冲突,这时就要采用import XX。

三、命名规范

  • 总体原则,新编代码必须按下面命名风格进行,现有库的编码尽量保持风格。

  • 尽量单独使用小写字母‘l’,大写字母‘O’等容易混淆的字母。

  • 模块命名尽量短小,使用全部小写的方式,可以使用下划线。

  • 包命名尽量短小,使用全部小写的方式,不可以使用下划线。

  • 类的命名使用CapWords的方式,模块内部使用的类采用_CapWords的方式。

  • 异常命名使用CapWords+Error后缀的方式。

  • 全局变量尽量只在模块内有效,类似C语言中的static。实现方法有两种,一是all机制;二是前缀一个下划线。

  • 函数命名使用全部小写的方式,可以使用下划线。

  • 常量命名使用全部大写的方式,可以使用下划线。

  • 类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。

  • 类的属性有3种作用域public、non-public和subclass API,可以理解成C++中的public、private、protected,non-public属性前,前缀一条下划线。

  • 类的属性若与关键字名字冲突,后缀一下划线,尽量不要使用缩略等其他方式。

  • 为避免与子类属性命名冲突,在类的一些属性前,前缀两条下划线。比如:类Foo中声明__a,访问时,只能通过Foo._Foo__a,避免歧义。如果子类也叫Foo,那就无能为力了。

  • 类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。

四、文档描述

  • 1 为所有的共有模块、函数、类、方法写docstrings;非共有的没有必要,但是可以写注释(在def的下一行)。

  • 2 如果docstring要换行,参考如下例子,详见PEP 257

Return a foobang

Optional plotz says to frobnicate the bizbaz first.

五、注释

总体原则,错误的注释不如没有注释。所以当一段代码发生变化时,第一件事就是要修改注释!

注释必须使用英文,最好是完整的句子,首字母大写,句后要有结束符,结束符后跟两个空格,开始下一句。如果是短语,可以省略结束符。

注释对于代码的阅读、扩展以及维护都非常重要。在 Python 中常用的注释方式有三种,分别为块注释( Block Comments )、行内注释( Inline Comments )、文档字符串( Documentation Strings )。

  • 块注释:在代码内部比较常见,其通常由一至多个段落构成,段落之间应使用开头为 # 的空行隔开,每个段落由完整的句子构成,在每行以 # 和一个空格开始。另外,块注释和被注释代码之间应具有同级别的缩进,这样有助于区分注释和代码之间关联关系。如下代码体现出块注释:
@classmethod
def fromkeys(cls, iterable, v=None):    
    # There is no equivalent method for counters because the semantics    
    # would be ambiguous in cases such as Counter.fromkeys('aaabbc', v=2).    
    # Initializing counters to zero values isn't necessary because zero    
    # is already the default value for counter lookups.  Initializing    
    # to one is easily accomplished with Counter(set(iterable)).  For    
    # more exotic cases, create a dictionary first using a dictionary    
    # comprehension or dict.fromkeys().    
    raise NotImplementedError(        
        'Counter.fromkeys() is undefined.  Use Counter(iterable) instead.')
  • 行注释 :行内注释 是一种形式相对简单的注释,它和表达式或语句位于同一行,之间应通常使用两个空格隔开,注释部分应以 # 和一个空格开始。
one_list = []  # 创建列表
  • 文档字符串:
    在 Python 中,最重要的注释形式便是 文档字符串。主要用于两方面:
    用来对模块、类、函数、方法等进行说明;
    可以配合一些辅助工具来自动化生成代码文档
    当然大家现在可能很难体会到文档字符串的重要性,但是提到开源这个词,我们就会知道,一个开源文档的质量取决于它的可读性,而可读性往往伴随着大量的说明文档。
def function_name():
    """docstrings"""
    pass
  • 避免无谓的注释。

六、编码建议

  • 建议每行不超过 80 个字符,如果超过,建议使用小括号将多行内容隐式的连接起来,而不推荐使用反斜杠 \ 进行连接。例如,如果一个字符串文本无法实现一行完全显示,则可以使用小括号将其分开显示,

  • 编码中考虑到其他python实现的效率等问题,比如运算符‘+’在CPython(Python)中效率很高,都是Jython中却非常低,所以应该采用.join()的方式。

  • 尽可能使用‘is’‘is not’取代‘==’,比如if x is not None 要优于if x。

  • 使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自Exception。

  • 异常中不要使用裸露的except,except后跟具体的exceptions。

  • 使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。比如说,在图 1 右侧这段代码中,if 判断语句同之前的代码多实现的功能不同,因此这里可以使用空行进行分隔。

  • 通常情况下,在运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔。

简单案例:

1.每个 import 语句只导入一个模块,尽量避免一次导入多个模块,例如:

#推荐
import os
import sys
#不推荐
import os,sys

2.不要在行尾添加分号,也不要用分号将两条命令放在同一行,例如:

#不推荐
height=float(input("输入身高:")) ; weight=fioat(input("输入体重:")) ;

最后

以上就是初学者应该遵循的部分 Python 编码规范,如果想了解更多 PEP 8 的详细信息,可访问官方介绍。

希望对正在学习Python的你有所帮助。所有的点赞、收藏和关注都是我创作的动力,感谢支持。
在这里插入图片描述
    如果对软件测试、接口测试、自动化测试、持续集成、面试经验。感兴趣可以进到806549072,群内会有不定期的分享测试资料。还会有技术大牛,业内同行一起交流技术

为什么Java程序员入职第一条是搭建Linux环境呢? 首先,Linux是一个广泛使用的操作系统,特别适合用于开发和运行Java程序,因为它提供了许多有助于开发人员的工具和功能。 其次,搭建Linux环境可以帮助Java程序员熟悉Linux操作,提高他们的技术水平。了解和掌握Linux命令和操作方式对于编写和调试Java代码非常有帮助。通过使用Linux,Java程序员可以更好地操作文件、配置网络和服务器,并且可以更方便地行版本控制和部署,提高开发效率。 此外,搭建Linux环境还可以让Java程序员学习和使用更多的开发工具和框架。Linux上有许多先的开发工具和环境,如Git、Maven和Docker等,它们对于Java程序员开发和管理项目非常重要。通过搭建Linux环境,Java程序员可以更好地理解和使用这些工具,并且有更好的学习和实践机会。 最后,搭建Linux环境还可以让Java程序员更好地了解和适应实际的开发和部署环境。在现实工作中,Java程序往往在Linux服务器上被部署和运行,因此熟悉Linux操作对于程序员而言非常重要。通过搭建Linux环境,Java程序员可以更好地了解和掌握服务器配置、网络设置和安全管理等,为后续的开发和部署工作打下基础。 综上所述,Java程序员入职第一条搭建Linux环境是有诸多原因的,它可以帮助程序员提高技术水平,学习和使用更多的开发工具和框架,以及适应实际的开发和部署环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值