想请教下各位大手子 如何把代码写得很"工程化"

2020-05-27 10:19:16 +08:00
 www5070504

lz 写 python 两年了 总感觉代码不够工程化(对比 java 或 c ) 有点随心所欲的意思 现在就想规范下自己那些不好的习惯 请问下各位有什么技巧或者见解么

4945 次点击
所在节点    程序员
30 条回复
www5070504
2020-05-27 10:19:44 +08:00
先谢谢各位老哥
kop1989
2020-05-27 10:29:08 +08:00
不懂 python
但是从方法论上讲,无非就是高内聚、低耦合、可读性高。
xuanbg
2020-05-27 10:31:51 +08:00
不用奇技淫巧,老老实实写:容易读懂,容易维护,容易扩展,稳定可靠的代码。
q8164305
2020-05-27 10:33:25 +08:00
先保证不写重复代码,你自然知道如何工程化
opengps
2020-05-27 10:34:31 +08:00
我写代码就是如此,当年用非常原始的代码风格撑起了几十万的 GPS 并发,后来终于有资深一点的工程师参与,做了几层拆分,不过反而从此不在追加新功能了,毕竟框架的意义是多人分工,而不是让编码更灵活
guolaopi
2020-05-27 10:36:14 +08:00
想起了两个大佬撕逼,
一个说都 21 世纪了,js 的 express 还直接把所有业务逻辑都写到一起。
另一个说:是,我不用写一个方法都要封装几十层的类,
(滑稽
nightwitch
2020-05-27 10:38:49 +08:00
-Werror
ytmsdy
2020-05-27 10:39:08 +08:00
python 的话,别写一些花式语法就好了。
vitoliu
2020-05-27 10:41:41 +08:00
@opengps 原始代码,几十万 GPS 并发,拆分,框架。
vitoliu
2020-05-27 10:42:10 +08:00
@opengps 真大佬
opengps
2020-05-27 13:00:57 +08:00
@vitoliu 其实很小的,4 层通信不像 7 层那么浪费资源,我从前东家走的时候已经上百万设备了,用了也就 100 台左右低配 ECS 服务器分流负载
SpiderXiantang
2020-05-27 14:13:30 +08:00
玩一下 tdd
zhuangzhuang1988
2020-05-27 14:27:43 +08:00
python 的话学 tornado 下呗
wmhx
2020-05-27 14:30:54 +08:00
多看看大佬的代码
newdongyuwei
2020-05-27 15:30:46 +08:00
整体架构搞好,把 lint 和 test 加上。工程化就是既要开发效率 /迭代速度,也要代码质量。这些是通用的,跟用不用 Python 没有关系。好的开发框架其实就为工程化打好了基础。
tt67wq
2020-05-27 17:03:18 +08:00
把你觉得工程化的代码抄过来,说是你写的
seki
2020-05-27 17:04:18 +08:00
买一本代码大全看看吧
fancy2020
2020-05-27 17:07:14 +08:00
设计一个功能的时候多想想“意外情况”,我觉得工程化的很重要的一方面就是对错误分支的处理
laike9m
2020-05-27 17:16:46 +08:00
工程化的核心就两条:可读性、可扩展性(或者说 easy to change )。

做到这两点基本上就没什么问题了。这也是为什么我很烦一些 Java 的范式(比如 Guice ),为了一些所谓的便利严重牺牲了代码可读性,当然深层原因还是语言本身。就 Python 来说,主要还是不要沉迷黑魔法,尽可能用大家都看得懂的方式写代码,不要老想着做一行超人。如果一定要用,就多写点注释吧。

至于可扩展性,个人觉得主要还是跟具体场景有关。虽然也有些通用原则比如高内聚低耦合啥的,但落实到具体的项目,还是依赖于你首先把整个逻辑理清楚,再考虑哪些东西是未来有可能要变的。
nuistzhou
2020-05-27 17:27:18 +08:00
因为经验的关系,单纯看好的代码你可能无法 get 到那个点,去看看<Clean Code>吧,至少对我挺有帮助。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/675866

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX