• helloworld
    2019-07-11
    我的总结

    缩进规范:
    1. 使用四空格缩进
    2. 每行最大长度79个字符

    空行规范:
    1. 全局的(文件级别的)类和全局的函数上方要有两个空行
    2. 类中的函数上方要有一个空行
    3. 函数内部不同意群的代码块之前要有一个空行
    4. 不要把多行语句合并为一行(即不要使用分号分隔多条语句)
    5. 当使用控制语句if/while/for时,即使执行语句只有一行命令,也需要另起一行
    6. 代码文件尾部有且只有一个空行

    空格规范:
    1. 函数的参数之间要有一个空格
    2. 列表、元组、字典的元素之间要有一个空格
    3. 字典的冒号之后要有一个空格
    4. 使用#注释的话,#后要有一个空格
    5. 操作符(例如+,-,*,/,&,|,=,==,!=)两边都要有一个空格,不过括号(包括小括号、中括号和大括号)内的两端不需要空格

    换行规范:
    1. 一般我们通过代码逻辑拆分等手段来控制每行的最大长度不超过79个字符,但有些时候单行代码还是不可避免的会超过这个限制,这个时候就需要通过换行来解决问题了。
    2. 两种实现换行的方法:
    第一种,通过小括号进行封装,此时虽然跨行,但是仍处于一个逻辑引用之下。比如函数参数列表的场景、过长的运算语句场景
    第二种,直接通过换行符(\)实现

    文档规范:
    1. 所有import尽量放在代码文件的头部位置
    2. 每行import只导入一个对象
    3. 当我们使用from xxx import xxx时,import后面跟着的对象要是一个package(包对应代码目录)或者module(模块对应代码文件),不要是一个类或者一个函数

    注释规范:
    1. 代码块注释,在代码块上一行的相同缩进处以 # 开始书写注释
    2. 代码行注释,在代码行的尾部跟2个空格,然后以 # 开始书写注释,行注释尽量少写
    3. 英文注释开头要大写,结尾要写标点符号,避免语法错误和逻辑错误,中文注释也是相同要求
    4. 改动代码逻辑时,一定要及时更新相关的注释

    文档描述规范:
     三个双引号开始、三个双引号结尾;
     首先用一句话简单说明这个函数做什么,然后跟一段话来详细解释;
    再往后是参数列表、参数格式、返回值格式的描述。

    命名规范:
    1. 变量名,要全部小写,多个词通过下划线连接,可以使用单字符变量名的场景,比如for i in range(n)这种变量没有实际意义的情况
    2. 类的私有变量名,变量名前需要加2个下划线
    3. 常量名,要全部大写,多个词通过下划线连接
    4. 函数名,要全部小写,多个词通过下划线连接
    5. 类名,要求驼峰形式,即单词首字母大写,多个词的话,每个词首字母大写然后直接拼接
    6. 命名需要做到名如其意,不要吝啬名字的长度

    代码分解技巧:
    1. 不写重复代码,重复代码可以通过使用条件、循环、函数和类来解决
    2. 减少迭代层数,让代码扁平化
    3. 函数拆分,函数的粒度尽可能细,也就是一个函数不要做太多事情
    4. 类的拆分,如果一个类中有多个属性描述的是同一类事物,就可以把这些属性拆分出来新建一个单独的类
    5. 模块化,若项目偏大,要为不同功能模块创建独立的目录或文件,通过import互相关联
    展开

    作者回复: 很棒

     2
     36
  • lipan
    2019-07-11
    还记得刚开始写第一个iOS项目的时候,一个文件几千行代码。

    业务和逻辑没有分层设计的思想,全部混合在一个文件里,虽然勉强实现了功能,但是后期代码没法改,连我自已都看不懂了,遑论接盘者。

    后来在做新浪微博登录授权的时候,看了一下微博oAuth的授权流程,顿时大开眼界。后来又看了一些苹果给的开发例子,才开始有了代码的分层设计和想法,然后才开始学习iOS的MVC和MVVM的设计架构,代码算是勉强看得下去。

    所以我觉得如果要提高代码水平,除了动手实战以外,还要多观摹和学习大神的项目代码。

    看到老师能够把Python知识给我们讲解深入浅出,举重若轻,完全符合我心目中的大神风范。

    因此,希望老师可以给我们分享一些Python的小、中型的项目或Demo(关于爬虫、机器学习、深度学习、自动运营、量化分析或是其它有趣的Python做的小工具都可以)。以供我们观摹学习。谢谢。
    展开

    作者回复: 👍

    
     11
  • 夜路破晓
    2019-07-10
    听很多程序员讲过,开始他们的关注点大多数是先写出能跑起来的代码,后期当优化成为他们的瓶颈和需求时再来关注代码规范之类的问题。
    对于初学者而言,想要实现弯道超车,就需要下大力气把基础夯实,而代码规范正是其中重要的一项。

    不可否认,担心学了半天能写漂亮但跑不起来代码的大有人在。如何权衡呢?
    分享一个认知:写漂亮代码与写能跑起来的代码之间不存在因果关系,两者都是你需要花费时间精力学习的内容。
    越早认识到这一点,越能合理而高效地安排自己的学习计划。
    展开

    作者回复: 万事万物都有个度在里面。

    在公司写业务逻辑,有规定完成时间的前提下,很容易写出不规范,不优雅的代码,长期以往,能力自然得不到更多的锻炼。自己学习的时候,就一定不要为了贪图快,而是更多地去进行思考,之后再写代码,多花时间在思考上,而不是打字上。

     1
     7
  • new
    2019-07-10
    如果代码逻辑清晰,加上注释是锦上添花的事,相对写代码和读代码,程序员更愿意自己写代码,而在项目中又必须要读代码,因此代码注释真的很重要,特别是那些逻辑复杂还掺杂部分业务的代码逻辑,如果不加注释几乎不可能有人理解,但是问题来了,如果后来的程序员把最初编写代码的人的代码修改了,但是注释却不更新就会对公司其他人产生重大影响相当于埋了雷,比如你用128个标识位分别表示128个探头启停信号,而在硬件升级过程中探头数量减少了4个探头,原始注释可能是描述128个探头信号启停等信息,而第二个程序员在升级修改时直接修改了循环计数变量为124,常量128未修改,注释也没有改,后又新来的程序员以为程序存在bug,把循环次数重新改回了常量定义128,导致4个探头怎么也读取不到信号,测试n长时间,最后查到硬件才明白是根本没有那4个探头

    作者回复: 👍

     1
     3
  • Leon📷
    2019-11-12
    大量if else嵌套我接盘过这类代码,我觉得有两个原因造成的,第一就是开发者自己逻辑不清晰,想到哪写到哪 第二 就是懒,赶紧把泥巴墙糊完去结工钱的感觉,这是对项目的极度不负责任,也是对自己的不负责任,坏的习惯养成了就很难改掉了
    
     2
  • 吴月月鸟
    2019-07-11
    写的代码没写注释,当初自己一行一行码的代码,过段时间自己都不认识了。
    
     1
  • JackDong
    2019-07-10
    老师,我看之前的文章有个疑问,就是说列表在扩容的时候如果遇上空间被占用,需要重新复制到一块新的地址时。它的id会变么?
    
     1
  • Paul Shan
    2019-11-22
    代码拆分是让代码清晰的关键,毕竟很少有特别大部头的代码是可读的。
    
    
  • Paul Shan
    2019-11-22
    代码规范应该由机器自动完成,当一个程序员使用多种语言的时候,每种语言的规范其实不一样,例如命名规则,如果都有机器自动完成检查,事半功倍。
    
    
  • zxguan
    2019-10-29
    有推荐的“目录结构规范”么? 谢谢
    
    
  • 自由民
    2019-10-19
    初学时很多bug找了半天不知道问题在哪,最后发现是少加1或者多加1这类的,或者少写一个=。而之所以看不出来,跟代码写了并拢在一起,没有适当的空格很有关系。那时又是初学,很打击信心。后来就严格按规范写了。
    
    
  • 丁丁历险记
    2019-10-07
    重构,改善代码即有设计,里面有大量拆解套路,例如代码意图和代码实现分离。
    
    
  • Geek_54edc1
    2019-09-26
    现在越来越觉得给变量、函数起名字是个大学问~~~~,最重要的是不能有歧义!!!!
    
    
  • cyz
    2019-09-18
    值得反复阅读
    
    
  • Geek_8716eb
    2019-09-01
    定期观摩一些好的开源项目,或者组内优秀的项目代码块,提高一下自己的代码品味。
    
    
  • 竹篮打水
    2019-08-07
    最后一个示例、class Job的self.job_description = description前面少了一个job_、应该是self.job_description = job_description。
    
    
  • 🍐
    2019-07-31
    找数组中最小数那个,老师的代码跑出来结果好像有问题啊
    
    
  • Hector
    2019-07-16
    pytorch的源码注释很优秀
    
    
  • 大C
    2019-07-15
    用了uuid的库,自动生成uuid。然后有一个变量名起成了uuid。。。。
    
    
  • Geek_d848f7
    2019-07-15
    出现过命名和内置模块一样的情况,结果调用内置模块时,报错或者不起作用
    
    
我们在线,来聊聊吧