谈谈“烂代码”

本贴最后更新于 2000 天前,其中的信息可能已经水流花落

谈谈“烂代码”

什么样的代码是烂代码?

我个人根据自己的经历总结一下烂代码的几个特征:

  • 不复用、封装
    相同的逻辑只会复制粘贴
  • 不模块化
    没有清晰的模块划分,模块与模块的耦合也没有概念
    下面举几个亲身实例:

在前端的发展中,组件化是一个十分重要的概念,各大框架也都给出了自己的实现。

这里以 Vue 为例,我曾经见过“高人”,这么写:
15552533701.jpg
这样写的意思就是讲所有组件的样式都统一放在 assets 文件夹下然后在组件里逐个去引入。我觉得这样的方式简直糟糕透了。

  1. 这样的方式完全违背了组件内聚的思想。
  2. 在需要修改的时候还得再进入 assets 文件夹下去找对应的样式文件进行修改
    我也能理解样式代码过多需要单独抽离成为一个文件,但是也应该是跟组件的 dom 在同一个目录下,如果脚本部分的代码也很多,正好也抽离出来,三个文件放在一个目录下,这样才是更为“内聚”的做法

面对对象是一个很普及的概念

这里以 Java 为例,在 Java 里,如果两个类有相同逻辑的方法时,应该怎么办?
做法一:复制粘贴相同的逻辑

Class A {
	void eat(){
		System.out.println('eating...');
	}
}
Class B {
	void eat(){
		System.out.println('eating...');
	}
}

这么写,如果有需求改动,比如把 eating 换成 eated,这样就得分别到两个类中进行修改,更加合理的做法应该是,让两个类继承自一个父类,就可以复用这个 eat()方法了

Class Parent{
	void(){
		System.out.println('eating...');
	}
}
Class A extends Parent{}
Class B extends Parent {
}

但是现实中我遇到很多的程序员都是复制粘贴第一种方式
当然这里得声明,我的代码写的也不一定就好,但是我觉得上面的两个例子真的让我很不能理解。

  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    264 引用 • 665 回帖
  • 组件化
    2 引用 • 17 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3186 引用 • 8212 回帖 • 1 关注
  • 继承
    6 引用 • 17 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone9891 1 赞同

    想要保持代码高质量,不是说一次性就能设计好的, 而是要经过不断的重构,但是在大环境下,没有多少能提供可以持续重构的时间和精力的。况且,多人合作的话,别人写的代码,重构可能就是灾难

    1 回复
  • 其他回帖
  • wenandlu 1 赞同

    其实这个事情很好理解,很多烂代码都是被时间逼出来的。当时间不够的时候,写代码最好的办法就是复制粘贴,而不是去思考如何重用

  • 对,有些代码真的一眼就可以明白是做什么,即使用的是英文。前段时间接手的一个项目,非常干净,该有注释的地方有注释,该抽象简洁的地方都有抽象,好的代码真的看着就是一种享受,太舒服了。

  • hjljy 1 赞同

    现在开发的系统,字段全是中文拼音,我骄傲了么?

    2 回复
  • 查看全部回帖