深入理解代码中的问题:晦涩与误导
1. 过度抽象
良好的意图有时可能会导致不良的结果。封装原子类型并使用包装器确实能让源代码更易于适应变化,但任何策略走向极端都会产生不良影响。过度包装会让人迷失在复杂的层级中,可能需要深入 50 层才能看清实际被修改的内容。
以下是一个示例代码:
struct TextValue
{
char *string;
};
struct TextField
{
struct TextValue textValue;
};
struct SimpleKeyField
{
struct TextField textField;
};
struct RelationalKeyField
{
struct SimpleKeyField simpleKeyField;
};
struct KeyField
{
struct RelationalKeyField relationalKeyField;
};
实际上,我们处理的只是一个字符串,但它经过了层层包裹,变得难以辨认。在实际应用中,这种嵌套可能会分散在多个文件中,使得调试时遍历这些层级变得非常繁琐。
2. 代码混淆
代码混淆是指故意让代码难以阅读。可以使用工具自动完成,也能手动实现。
- 国际混淆 C 代码竞赛(IOCCC)示例
有匿名程序员在 1984 年提交了如下代码到 IOCCC:
超级会员免费看
订阅专栏 解锁全文
774

被折叠的 条评论
为什么被折叠?



