如何尽量增加 Python 代码行数,在不改变功能的前提下,代码尽量复杂化

2023-11-30 15:14:49 +08:00
 shijingshijing

RT ,帮朋友问的,他 6 月毕业一直空档,现在好容易找了个传统公司,偏制造业的那种,开发就几个人,老板定 KPI 主要是看代码行数和文档字数。老板的思路是,我提一个功能,朋友帮他实现,然后按代码行数来算这个功能的复杂程度和绩效。老板虽然不懂编程,但是还是很精明的,会给让他们自己排期,定节点,然后评审。项目开始和结束的时候,都会找他懂技术的朋友帮忙看一下。

他们老板和老板的朋友不傻,所以塞注释那种肯定是不行的。我帮他在网上找了一堆 Python 代码混淆的工具,Pyobfuscate 那种把函数名改成 lllllll 的,肯定也不行。但评审也不会太深入,塞点无效代码应该是可以的,就是太费脑子了。

目前我和他两个臭皮匠总结了下面几个可行的方法:
1 ,所有变量都尽量单独显式定义并赋值,美其名曰初始化。
2 ,能不写在一行的,尽量不写在一行。
3 ,能封装成函数的,尽量封装成函数,既增加行数,还增加复杂度。
4 ,tkinter 写的窗口什么的,即使是有默认值,也单独拿出来重新赋值一下。

效果也是有的,一个 200 多行的 Python 脚本干到了 500 行,但是还是不够,朋友的意思是,最好是随着老板提出的功能线性增加,这样符合他的预期。大家还有什么好办法,集思广益,帮帮他。

13303 次点击
所在节点    程序员
102 条回复
hangbale
2023-11-30 15:19:43 +08:00
轮子全部自己造
maybedk
2023-11-30 15:20:03 +08:00
你不如把 import 的包都重新实现一下
ModStart
2023-11-30 15:31:15 +08:00
不要用库,把库代码都拷贝进来重写一遍
darkengine
2023-11-30 15:33:27 +08:00
把循环人工展开 。。。
ljsh093
2023-11-30 15:35:09 +08:00
@darkengine #4 你这个最逆天
janwarlen
2023-11-30 15:36:35 +08:00
《按代码行数来算这个功能的复杂程度和绩效》
《他们老板和老板的朋友不傻》
roundgis
2023-11-30 15:38:24 +08:00
換 java
jrtzxh020
2023-11-30 15:38:27 +08:00
老板的思路是,我提一个功能,朋友帮他实现。。。 都实现了,为什么还需要你朋友开发???
coderwink
2023-11-30 15:39:07 +08:00
阿里系出来的吧
chuckzhou
2023-11-30 15:39:14 +08:00
有这功夫不如多学点东西,提高自己换更好的工作,否则只能在这种 low 逼公司过一辈子了。
iorilu
2023-11-30 15:40:01 +08:00
有个好方法, 你搜下 cython , 可以将 python 转为 c 代码模块, 然后 python 程序照样调用, 不用改

结果就是 100 行变几千行 c 代码
wumou
2023-11-30 15:40:28 +08:00
多写一些不会被调用的方法
krixaar
2023-11-30 15:41:00 +08:00
有需要存储数据和配置的需求的话,往数据库里写(本地就 sqlite 啥的),哪怕存个按钮状态,都用 SQL 操作,不要 context manager ,存个东西取个东西一堆 connect/cursor/prepared statement/close ,建库无限追求三范式,取个数据 join 一堆一个 join 一行,不搞成一个函数全部复制粘贴 DO Repeat Yourself 也是 DRY 原则
Narcissu5
2023-11-30 15:41:08 +08:00
#1 正解,不使用任何第三方库,排序都自己写
raycool
2023-11-30 15:41:42 +08:00
这个问 GPT4 ,对于写好的函数让 gpt4 增加行数
lambdaq
2023-11-30 15:42:06 +08:00
那还说啥?用库啊。直接 vendor 到项目里。时不时还改一下库的内部实现。
gxy2825
2023-11-30 15:52:38 +08:00
#1 +1 ,能造轮子绝不用现成的轮子,问就是效率更高
cambria
2023-11-30 15:54:50 +08:00
Python ?在每一个函数里增加足够多的数据校验和异常处理,任谁都挑不出毛病。
masterclock
2023-11-30 15:56:19 +08:00
2 楼正解
Goooooos
2023-11-30 15:57:07 +08:00
调用每个方法都加个 try expect 包裹

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

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

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

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

© 2021 V2EX