V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
CicadaMan
V2EX  ›  Python

如何才能写出优雅的代码?这是我送给你的 7 点建议

  •  
  •   CicadaMan · 2018-07-23 20:11:43 +08:00 · 1840 次点击
    这是一个创建于 2344 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1、编码规范

    每种编程语言、每个框架都有自己的一套编码规范和编码最佳实践方式,例如 PEP8 是 Python 语言的编码规范,作为 Python 开发者,每个人至少要将 PEP8 读上三五遍,熟记于心并运用在项目中。

    2、文档注释

    程序员最讨厌的两件事情:一,别人的项目没有文档和注释,二,自己的项目要写文档和注释。

    经常看到一些项目连起码的 REAMDME 文件都没有,这跟 demo 没什么区别。如果你的项目没有文档,一旦有新人进来接手也是一脸懵逼,还显得非常业余。所以,一个正经的项目至少要说明项目的是做什么的,用了哪些东西,程序怎么跑起来等等。

    简单的代码自然无需写注释,良好的代码自身就是文档和注释,但是如果有较复杂的代码逻辑就必须用注释来加以说明你当时写这段代码是如何思考的,否则隔两个月自己都不知道写的什么烂代码,还在骂这是哪个傻逼写的。所以,我们写注释应该在该写的时候才写,写多了或者写少了都不合适。还有一种情况就是过期的注释,需求变更代码更新后,发现注释还是旧的。

    虽然 Python 是一门优雅简洁的语言,但是同样离不开注释的帮助,毕竟,代码是写给人看的。 3、避免重复代码

    软件设计原则里面有个 DRP 原则,就是在一个项目里面不要写重复的代码,如果同样的逻辑出现超过两次,那么你就考虑将它进行封装成为一个函数或者公有方法。过多重复的代码到后面将导致很多潜在的问题,一处有问题,导致处处都有改动。

    4、测试覆盖率

    测试驱动开发( TDD )是目前主流的开发模式,但是我们往往因为项目进度或者懒惰,而将单元测试忽略了。没有单元测试的代码就像一座危楼,你永远都不知道里面有哪些坑,因为一旦改了一处代码,你无法预知对整个系统有什么影响,而单元测试是对代码质量的一种保障,测试覆盖率越高,潜在问题越少。 5、安全意识

    安全问题没发生前都是小事,一旦发生将是不可估量的大事情,几年前 CSDN 这么大一个网站竟然还闹出将密码用明文存储的笑话,可见程序员的安全意思有多低,密码至少要做 HASH 存储并加盐处理。去年时候大疆的程序员将服务器的 key 上传到 github 也是典型的安全意思缺乏。什么东西该同步到代码库什么东西不该放要区分清楚。常见的 web 安全也要清楚,像 SQL 注入,CSRF、XSS 攻击的基本原理以及如何预防等等。

    6、设计与架构

    如果设计架构错了,代码写的再好也白搭,好比建房子设计错了,房子在漂亮也华而不实,可能隐藏重大安全隐患。合理的设计与架构在于根据业务做合理的取舍,遵循逐步演进原则,切忌无脑跟风参考 BAT 规模量级来设计你的系统,好的系统都是演变过来的。抛开业务谈技术都是耍流氓。

    7、学习交流分享

    分享你的所得,和比你厉害的人多交流。

    3 条回复    2018-07-25 15:36:13 +08:00
    KKKKKK
        1
    KKKKKK  
       2018-07-24 00:52:26 +08:00 via iPhone
    第零点,良好的排版
    CicadaMan
        2
    CicadaMan  
    OP
       2018-07-24 09:48:40 +08:00
    @KKKKKK 谢谢。
    netStand
        3
    netStand  
       2018-07-25 15:36:13 +08:00
    已收藏。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2852 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:06 · PVG 08:06 · LAX 16:06 · JFK 19:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.