谈谈“烂代码”

本贴最后更新于 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 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 有一个问题,如果是别人写的类,也不太敢轻易继承复用他里面的方法,万一哪天他吧那个方法改了呢。

  • 其他回帖
  • wenandlu 1 赞同

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

  • nobt

    我也好想写很好看的代码,有些代码好看到想哭

    1 回复
  • someone
    作者

    👍

  • 查看全部回帖