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

351 天前
 shijingshijing

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

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

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

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

12759 次点击
所在节点    程序员
102 条回复
garipan
351 天前
你这个需求,ChatGPT 4 应该可以完美满足
corcre
351 天前
老板怎么统计行数呢, 如果是在 git 那些工具统计的话自己写个格式化工具没事就改一下换行条件能显著提升代码更改行数🐶
bianhui
351 天前
为了一个函数,把别人开源项目搬进来
wangtian2020
351 天前
像我是总是忍不住把 JavaScript 写的尽可能短肯定忍不了,一天就跑路
angryfish
351 天前
1.能不用第三方库就不用,自己写,自己实现
2.多做防御性判断,异常处理能多完善就多完善
3.多打 log
4.多用设计模式,各种秀既能
wangtian2020
351 天前
戒备心强到连开发人员不信任,搞乱七八糟的开会报告,肯定到时候有利润也不会分享给员工,员工当个可替换的工具人。生活只要给我留一口气,这样的公司我就不可能待的
McZoden
351 天前
把所有的迭代器遍历,修改为 c 语音风格的 while ,i++
例如:

list = [1, 2, 3, 4, 5]
for i in list: ...

修改为

i = 0
while i < len(list):
...
i += 1

针对所有的可迭代对象:列表,字典,生成器
isSamle
351 天前
1.把库拉下来本地自封装:美其名曰脱离网络/版本依赖
2.所有的逻辑加上诸如“操作记录”,“访问 IP”,“权限判定”,“调用日志”之类的数据记录和管理:美其名曰增强安全管理
3.命名使用全拼长蛇形链:美其名曰见名知意
4.所有逻辑加上各种异常校验诸如“有无权限”,“调用是否正常”,“异常原因分类 401/402/403/404…”:美其名曰便于测试维护
5.尽可能都去构造类,有无必要都再继承后复写相关变量/方法作为新的子类:美其名曰面向对象
CodeCodeStudy
351 天前
增加代码行数是 java 的看家本领,各种 getter, setter 就已经代码满天飞了
tangtang369
351 天前
所有功能都面向对象 用类封装 每个类的魔法方法(__init__,__new__,__del__,__str__,__repr__,__call__)统统来一遍
ma836323493
351 天前
简单, 用到的轮子, 把轮子源码都拷到项目里面,就成自己的了
leaflxh
351 天前
学 Java 的写法,类中变量的访问和赋值全用 getter 和 setter
pangdundun996
351 天前
我的建议是准备跑路,不要在这种事上浪费生命
chengdonghui
350 天前
糊弄了领导的同时,也糊弄了自己
RockShake
350 天前
不引用第三方库,直接把第三方库的代码集成到代码中,这量不就起来了么
43n5Z6GyW39943pj
350 天前
跑路
Alexsen
350 天前
数据校验和异常处理,再打个日志
F7TsdQL45E0jmoiG
350 天前
典型的互相伤害
ztxcccc
350 天前
@janwarlen #6 老板的朋友可能真不傻,而是不知道按行定 KPI
Donahue
350 天前
换老板

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

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

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

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

© 2021 V2EX