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

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

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

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

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

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

13331 次点击
所在节点    程序员
102 条回复
aosan926
2023-12-01 11:14:27 +08:00
visper
2023-12-01 11:17:38 +08:00
把现在的方法写成 class, 功能放 class 里面。抽象出 10 层继承,美其名曰为了以后的扩展性。每一层里面又可以复制一次这个每一个方法,然后改一点或者一些层的留空。
crayygy
2023-12-01 11:21:17 +08:00
一个孤僧独自归,关门闭户掩柴扉。
半夜三更子时分,杜鹃谢豹啼子规。
Rehtt
2023-12-01 11:22:55 +08:00
那我上周提交了 4w 行代码岂不是无敌🤣
xz410236056
2023-12-01 11:34:43 +08:00
pip install 以后就禁用了,for 也禁用了。 当然这工作不要自己做,代码写完后扔 gpt 搞,顺便让他再改改
stillsilly
2023-12-01 11:37:51 +08:00
3 ,能封装成函数的,尽量封装成函数,既增加行数,还增加复杂度。

并不是。
函数能更好地抽象,少暴露细节,降低复杂度。能减少重复代码,减少行数。
同一个功能,我的代码量会比我的同事们的少很多,因为我有很多个简短的函数可以复用
vagusss
2023-12-01 11:43:44 +08:00
引用第三方库的时候, 把源码拷贝出来当成自己的代码,靠谱
Felldeadbird
2023-12-01 11:57:14 +08:00
建议尽早提桶走人。趁着年轻换一个好点的技术公司更好。把写代码的心思放在这种奇葩事情上,职业生涯污点啊。

楼上各位大佬的方案都可行。
InDom
2023-12-01 12:00:10 +08:00
var name = 1
改成

class name {
var name = 1
func set (val) {
name = val
}
func get(){
return val

}
}
virusdefender
2023-12-01 12:06:56 +08:00
写个 wrapper ,里面捕获异常,然后返回 (data, error)

然后 if err is not None: xxx
chinesehuazhou
2023-12-01 12:08:35 +08:00
杀敌一千,自损八百。敷衍了老板,却污染了自己
dnfQzjPBXtWmML
2023-12-01 12:13:14 +08:00
函数参数尽量改成*args, **kwargs
xuanbg
2023-12-01 12:29:56 +08:00
最简单的做法就是复制开源库的代码。
zypy333
2023-12-01 12:46:10 +08:00
如果有类似的功能,不要复用代码,拷贝改一份,多来几遍就非常酸爽了
jones2000
2023-12-01 13:00:40 +08:00
把通用的方法,或函数, 或第三方的独立出来,封装成统一的一套函数。 项目开发完成以后,把源码里面的这些函数替换成源码就可以了。
hlwjia
2023-12-01 13:34:19 +08:00
@darkengine hahhahahahah 这个太牛逼了
hlwjia
2023-12-01 13:37:08 +08:00
@ModStart 这个其实挺好,顺便提升了自己的技术
hlwjia
2023-12-01 13:37:43 +08:00
数据库自己实现一个
dragondove
2023-12-01 13:38:07 +08:00
年初的时候刚好某群举办了一个活动写九九乘法表,我把代码最长的那一位的源码放这里,供参考
https://github.com/InvoluteHell/NineNineTable/blob/master/HisAtri/%E4%BD%86%E6%B1%82%E6%9C%80%E5%A4%A7.py
当然,你也可以参考这个 java 版本的,自己定义类型,不过这个不够逆天
https://github.com/InvoluteHell/NineNineTable/blob/master/Luorenmu/main.java
如果你想要更加复杂,代码行数多的同时保证“企业级”质量,可以参考企业级 java hello world 编写样例
https://github.com/Hello-World-EE/Java-Hello-World-Enterprise-Edition/tree/master/src/com/example
aborigine
2023-12-01 13:39:08 +08:00
过度封装以及重复造轮子

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

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

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

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

© 2021 V2EX