当前位置: 首页 > 科技观察

您如何编写您的同事无法维护的代码?

时间:2023-03-19 19:07:54 科技观察

是的,你没有看错,这篇文章就是教你如何写出同事无法维护的代码。1.程序命名易于输入的变量名称。例如:Fred、asdf单字母变量名。例如:a,b,c,x,y,z(如果还不够,考虑a1,a2,a3,a4,….)拼写错误要有创意。例如:SetPintleOpening、SetPintalClosing。这会使搜索代码变得困难。抽象的。比如:ProcessData、DoIt、GetData……抽象得跟没说一样。缩写。比如:WTF、RTFSC……(用拼音缩写也好,比如:BT、TMD、TJJTDS)任意大写字母。例如:gEtnuMbER..重用命名。在嵌套语句块中使用相同的变量名会产生奇迹。使用重音字母。例如:intínt(第二个ínt不是int)使用下划线。例如:_,__,___。使用不同的语言。例如,混合英文、德文或中文拼音。使用字符名称。例如:斜杠、星号、逗号……使用不相关的词。比如:god,superman,iloveu....混淆了l和1。字母l和数字1有时是看不见的。2.伪装欺诈交织注释和代码。代码与显示不符。例如,您的界面显示邮政编码,但该代码确实称为zipcode。隐藏全局变量。将全局变量作为函数参数传递给函数,会让人以为该变量不是全局变量。使用相似的变量名。例如:单词相似,swimmer和swimner,字母相似:ilI1|或oO08。parselnt和parseInt,D0Calc和DOCalc。这个组:xy_Z,xy__z,_xy_z,_xyz,XY_Z,xY_z,Xy_z。重载的功能。使用相同的函数名,但其功能与具体实现无关。运算符重载。感谢CCTV,感谢C++,重载运算符会使您的代码变得怪异。这可以将混乱的代码提升为一种艺术形式。例如:重载!一个类的运算符,但实际函数不是反转,让它返回一个整数。所以,如果你使用!!运算符,然后会发生一些有趣的事情——首先调用重载的!呵呵。3.DocumentationandComments躺在评论里。你真的不必撒谎,只是在更改代码时不要更新注释。废话写在评论里。例如:/*add1toi*/只注释what,不注释why。不要注释秘密。如果您开发飞行系统,请确保每增加一个新的飞行,您都要修改超过25个地点的程序。不要把这件事写在文档里。注重细节。当你设计一个非常复杂的算法时,你必须写下所有的详细设计。没有100页,你无法停止。段落必须至少有5个级别,段落编号必须超过500,例如:1.2.4.6.3.13–显示可以应用所选缓解措施的活动的所有影响(省略短伪代码)。这样,你在写代码的时候,就可以让你的代码和文档保持一致,比如:Act1_2_4_6_3_13()不要注释scaleunit。例如,是以秒或毫秒为单位的时间,以像素或英寸为单位的大小,以及以MB或KB为单位的大小。等。此外,在您的代码中,您可以混合使用不同的度量单位,但也不要发表评论。陷阱。陷阱,永远不要在代码中注释陷阱。在评论和文档中发泄不满。四、编程JavaCasts。Java的类型转换是天赐之物。每次从Collection中获取对象时,都需要将其转换回其原始类型。因此,这些变换操作会出现在N个以上的地方。如果更改类型,则不一定会更改所有内容。编译器可能会也可能不会检查。利用Java的冗余性。例如:泡泡糖b=newBubblegom();游泳者=游泳者+1;注意变量之间的细微差别。从不验证。输入数据永远不会被验证,函数返回值也永远不会被验证。这样做会向大家表明你是多么信任你们公司的设备和其他程序员不去封装。呼叫者需要知道被呼叫的所有细节。克隆和复制。为了效率,你必须学会??使用复制+粘贴。你几乎不需要理解别人的代码,你就可以高效地编程。巨大的听众。写一个监听器,然后让你所有的按钮类都使用这个监听器,这样你就可以在这个监听器里做很多if...else...的语句,还是挺刺激的。使用三维数组。如果觉得3D不够,可以试试4D。混合。使用类的get/set方法并直接访问该公共变量。这样做的好处是它可以极大地挫败维护者。包,包,包。将所有API包装6到8次,深度超过4层。然后包装类似的功能。没有秘密。将所有成员声明为公开的。这样,你以后就很难限制别人使用它了,这样可以和其他代码产生更多的耦合,让你的代码存活得更久。安排和阻止。把drawRectangle(height,width)改成drawRectangle(width,height),等出几个版本再改回来。维护程序的程序员可能很快就会分不清哪个是对的。将变量更改为名称。例如,将setAlignment(intalignment)更改为setLeftAlignment、setRightAlignment、setCenterAlignment。保留所有未使用和过时的变量、方法和代码。完成你所有的子类,这样当你完成这个项目时,没有人可以通过继承来扩展你的类。java.lang.String不一样吗?避免使用布局。这允许我们只使用绝对坐标。如果你的老板强制你使用布局,你可以考虑使用GridBagLayout,然后将网格坐标设置为硬编码。环境变量。如果你的代码需要使用环境变量。好吧,您应该使用环境变量而不是构造函数来初始化您的类成员。使用全局变量。1)将全局变量的初始化放在不同的函数中,即使这个函数与这个变量无关,也会让我们的维护者做侦探工作。2)使用全局变量可以让你的函数有更少的参数。配置文件。配置文件主要用于一些参数的初始化。在编程中,我们可以让配置文件中的参数名称与实际程序中的名称不同。给你的班级充气。让你的类有尽可能多的臃肿和晦涩的方法。例如,您的类只实现了一种可能性,但您为所有可能性提供了方法。不要定义其他类,将所有功能放在一个类中。使用子类。面向对象是编写难以维护的代码的天赐之物。如果你有一个类有十个become(变量和方法),你可以考虑写10层继承,然后把这十个属性放在这十层中。如果可能,将十个类放在十个不同的文件中。弄乱你的代码。使用XML。XML的力量是无与伦比的。使用XML,您可以将10行代码变成100行。而且,还要强制别人也有XML。(参见,相信XML获得永生,相信XML获得自信)分解条件表达式。如:把a==100分解成,a>99&&a<101学会使用分号。如:如果(一);别的;{诠释d;d=c;}间接变换。例如:将double转换为字符串,编写newDouble(d).toString()而不是Double.toString(d)并广泛使用嵌套。一个NB的程序员可以在一行代码中使用10层以上的括号(),或者在一个函数中使用20层以上的语句嵌套{},将嵌套的ifelse转换为[?:]一个很NB的东西。长代码行。代码行越长越好。这样别人看的时候需要来回走动,不要过早返回。不要使用break,所以至少需要5层if-else来处理错误。不使用{}。不要在ifelse中使用{},尤其是使用重if-else嵌套时,甚至会胡乱缩进代码,这样即使是最有经验的程序员也会踩到陷阱。琐碎的封装。与封装一个bool类相比,类中的一切都是bool。循环。切勿使用for(inti=0;i5.测试切勿测试。从不测试任何错误处理,从不检查系统调用的返回值。永远不要做性能测试。如果它不够快,请告诉用户切换到更快的机器。一旦你做了测试,你可能不得不改变你的算法,甚至重新设计和重新架构。不要编写测试用例。不要做代码覆盖测试,自动化测试。测试是懦弱的。勇敢的程序员永远不需要这一步。太多的程序太害怕他们的老板,害怕失去工作,害怕用户抱怨,甚至被起诉。这种恐惧直接影响生产力。如果您对自己的代码有很强的信心,那么还需要测试什么?真正的程序员不需要测试自己的代码。6.其他你的老板什么都知道。不管你的老板多么愚蠢,你也必须严格按照他的意愿行事。通过这种方式,你将学习到更多的知识以及如何编写更多不可维护的代码。颠覆服务台。您要确保维护团队永远不会知道您的错误程序。当用户给您打电话或写电子邮件时,您应该忽略他们。就算做了,要求用户重做系统或者告诉用户自己的账号有问题也是标准答案。住口。对于一些像y2k这样的大bug,你要学会闭嘴,不要告诉任何人,包括你的亲戚朋友,同事和公司的管理层,这样到那一天的时候,你就可以利用这个bug来做钱。闪烁。你会学会胡闹,即使你的代码写得不好,你也要贴上GoF设计模式的标签,即使你的项目很烂,你也要贴上敏捷的标签,让整个团队和公司,以及甚至整个行业,都变得焦躁不安,以至于它真的可以为难以维护的代码铺平道路。