lz 写 python 两年了 总感觉代码不够工程化(对比 java 或 c ) 有点随心所欲的意思 现在就想规范下自己那些不好的习惯 请问下各位有什么技巧或者见解么
1
www5070504 OP 先谢谢各位老哥
|
2
kop1989 2020-05-27 10:29:08 +08:00 1
不懂 python
但是从方法论上讲,无非就是高内聚、低耦合、可读性高。 |
3
xuanbg 2020-05-27 10:31:51 +08:00 1
不用奇技淫巧,老老实实写:容易读懂,容易维护,容易扩展,稳定可靠的代码。
|
4
q8164305 2020-05-27 10:33:25 +08:00 via Android 3
先保证不写重复代码,你自然知道如何工程化
|
5
opengps 2020-05-27 10:34:31 +08:00 via Android 1
我写代码就是如此,当年用非常原始的代码风格撑起了几十万的 GPS 并发,后来终于有资深一点的工程师参与,做了几层拆分,不过反而从此不在追加新功能了,毕竟框架的意义是多人分工,而不是让编码更灵活
|
6
guolaopi 2020-05-27 10:36:14 +08:00 1
想起了两个大佬撕逼,
一个说都 21 世纪了,js 的 express 还直接把所有业务逻辑都写到一起。 另一个说:是,我不用写一个方法都要封装几十层的类, (滑稽 |
7
nightwitch 2020-05-27 10:38:49 +08:00 1
-Werror
|
8
ytmsdy 2020-05-27 10:39:08 +08:00 1
python 的话,别写一些花式语法就好了。
|
11
opengps 2020-05-27 13:00:57 +08:00 via Android
@vitoliu 其实很小的,4 层通信不像 7 层那么浪费资源,我从前东家走的时候已经上百万设备了,用了也就 100 台左右低配 ECS 服务器分流负载
|
12
SpiderXiantang 2020-05-27 14:13:30 +08:00 via Android 1
玩一下 tdd
|
13
zhuangzhuang1988 2020-05-27 14:27:43 +08:00 1
python 的话学 tornado 下呗
|
14
wmhx 2020-05-27 14:30:54 +08:00 1
多看看大佬的代码
|
15
newdongyuwei 2020-05-27 15:30:46 +08:00 1
整体架构搞好,把 lint 和 test 加上。工程化就是既要开发效率 /迭代速度,也要代码质量。这些是通用的,跟用不用 Python 没有关系。好的开发框架其实就为工程化打好了基础。
|
16
tt67wq 2020-05-27 17:03:18 +08:00 1
把你觉得工程化的代码抄过来,说是你写的
|
17
seki 2020-05-27 17:04:18 +08:00
买一本代码大全看看吧
|
18
fancy2020 2020-05-27 17:07:14 +08:00 2
设计一个功能的时候多想想“意外情况”,我觉得工程化的很重要的一方面就是对错误分支的处理
|
19
laike9m 2020-05-27 17:16:46 +08:00 via Android 2
工程化的核心就两条:可读性、可扩展性(或者说 easy to change )。
做到这两点基本上就没什么问题了。这也是为什么我很烦一些 Java 的范式(比如 Guice ),为了一些所谓的便利严重牺牲了代码可读性,当然深层原因还是语言本身。就 Python 来说,主要还是不要沉迷黑魔法,尽可能用大家都看得懂的方式写代码,不要老想着做一行超人。如果一定要用,就多写点注释吧。 至于可扩展性,个人觉得主要还是跟具体场景有关。虽然也有些通用原则比如高内聚低耦合啥的,但落实到具体的项目,还是依赖于你首先把整个逻辑理清楚,再考虑哪些东西是未来有可能要变的。 |
20
nuistzhou 2020-05-27 17:27:18 +08:00 via iPhone 1
因为经验的关系,单纯看好的代码你可能无法 get 到那个点,去看看<Clean Code>吧,至少对我挺有帮助。
|
21
noobcoder1 2020-05-27 17:41:14 +08:00 1
多封装,多抽象,撸码前多考虑一下现在和将来就行了....不要为了工程化而工程化,稳定才是第一位
|
22
wleexi 2020-05-27 17:54:36 +08:00 1
PY 确实不那么容易的工程化吧,JAVA C 这俩都有业界规范,老哥学一个玩玩感受下?
|
23
Nostalgiaaaa 2020-05-27 18:20:12 +08:00
|
24
SorcererXW 2020-05-28 00:43:06 +08:00 1
@q8164305 #4 不是不写重复代码就是好的工程代码,(尤其是新手工程师)从一开始就各种封装抽象,导致扩展性不够,后期需求变动导致更难修改。
|
25
23571113 2020-05-28 01:25:34 +08:00 via Android 1
工程=业务逻辑+框架。业务逻辑靠刷题,框架设计模式八股文。
|
26
evaseemefly 2020-05-28 08:30:55 +08:00
也在关注这个
|
27
lancelock 2020-05-28 09:00:12 +08:00 via iPhone
感觉 java 的做法有点过头了
|
29
opengps 2020-05-28 11:23:28 +08:00
@xavierxiu GPS 终端业务,从我名字可以联想下,我不是在说 QPS 指标,按照业务场景转化下,可以认为是十分之一到 20 分之一的终端数可以约等于 QPS
|
30
AvenirX 2020-05-28 12:46:09 +08:00 via iPhone
楼上都是工程大神...
我的建议是根据实际需求来,不要为了“工程化”而去“工程化” 不然适得其反。写了一段只会用到一两次的过程化的代码,何必搞成各个模块条条框框?以后你还能看懂吗? 某段代码每次随着需求改来改去?某些功能需要复用到另一个工程?有些参数牵一发动全身?... 有了这些需求你再去请教应该用什么方式去优化。 |