如何把一段简单的代码变复杂?

how to make your code confusing,即如何让你的代码看起来晦涩难懂。当然随着IT行业发展到现在,已经有人更专业地研究这个问题了,这里我参考一个前人的工作谈谈这个话题。

在纲领层面,你需要理解看你代码的人的心态,他们会带着问题阅读你的代码,通过阅读一片片代码来顺藤摸瓜地理解你的设计,然后学走或者作出必要的修改;而你的目的则是让他们直接懵逼。

具体思路则包括并不限于以下方法:

  1. 设计诡异的变量名/函数名。其中包括毫无意义的单字母,随机字符串;令人不适的错位大小写;与设计意图不同的名字;别人可能不懂的缩写;同一变量反复用作不同意图;等等。
    1. 要注意,除开最后一点,前面都可以通过查找替换的方式实现,这样也不会耽误你自己写代码的过程。
    2. 当然在这个手段中你可以直接使用凶残的匈牙利命名法(Hungarian notation
  2. 表层的code obfuscation。
    1. 比如用分号直接了结一个if else,然后再故意用{}来让下一块代码看起来好像是else的逻辑。
    2. 你可以用013来表示八进制的13,而别人可能会看走眼。
    3. 请记住C/C++的编译器根本不看换行和缩进。你既可以据此来让代码看起来晦涩也可以战术性误导他人。
    4. 据说大部分人难以理清多层嵌套的switch结构。
  3. 让你的代码逻辑和看起来不大一样。在C++里面你可以尝试多用宏和重载。宏可能藏在任何一个文件里,而重载则可以让人误认为你在用某些功能。
  4. 反模块化。多用全局变量,少做封装,少用assert这种胜过无数注释/文档的指示性语句。
  5. 补充一点评论区说的:多用goto。这让我想起了大一的时候一个程序设计老师说过的话:“你们考试的时候每用一个goto我就扣你5分,上不封顶”。

“我自己是一名老程序员,辞职目前在做讲师,今年我整理了一份适合2019年学习的J a v a干货,从最基础的面向对象到各种框架都有整理,送给每一位初学和进阶中想学Ja va编程的小伙伴。"

加QQ君羊:69769,9179(招募中)

猜你喜欢

转载自blog.csdn.net/sdssdfh/article/details/89281759