一、概念解读
“形”指的是前端开发中的具体技术和工具,包括HTML、CSS、JavaScript,代码结构,目录等;而“神”则指的是前端开发中的抽象思维和设计能力,包括用户体验、页面交互、前端架构,编程思想,设计思想等。
可以效仿大地,包容万物,学而后思,先进行学习、接受知识和经验,然后进行深思熟虑,将所学的知识转化为自己的理解和思考即是神的转化过程。
二、指导思想
2.1立方向
编码得有思想(神)去指导产生形的代码结构,而不是反过来,首先方向得正确。
2.2化繁为简
看牛人代码也如此,不要去看代码结构的组成,生搬硬套拿来使用,这都是形,同一个思想可以产生不同形,只学形没用,太多了,很繁,要抓住神就学到了所有,神其实就是一个简单的思想,要懂得化繁(形)为简(神),如何抓住神,就是看为什么这样组织代码结构的思想。
三、形和神的区别
“形”和“神”在前端开发中的区别在于,前者是具体的技术和工具,可以通过学习和实践获得;而后者则是抽象的思维和设计能力,需要通过不断的实践和思考才能够领悟。
形和神的关系就像是身体和灵魂的关系一样,一个好的前端开发者需要同时具备形和神两方面的能力。
三、如何学习到神
学习到前端开发中的“神”需要不断的实践和思考,学而后思。
首先,需要了解用户的需求和心理,掌握用户体验设计的基本原则。
其次,需要了解前端开发中的常用设计模式和架构,掌握前端开发的基本思维方式。
最后,需要在实践中不断积累经验,不断思考和总结,提高自己的设计能力(这里的设计是广义的,可以是架构设计,编程设计,代码目录组织设计,用户体验设计等)。
四、举例说明
下边举一个没有学到代码“神”写出的面条代码(为了完成功能而完成),和封装良好学到“神”的可扩展、可维护、可复用的代码的区别。
首先,让我们看一个面条代码的例子:
function calculateArea(length, width) {
if (length > 0 && width > 0) {
if (length === width) {
console.log("It's a square");
return length * width;
} else {
console.log("It's a rectangle");
return length * width;
}
} else {
console.log("Invalid input");
return null;
}
}
上述代码用于计算矩形或正方形的面积。同样,这段代码存在一些问题:
- 代码缺乏结构和组织,难以理解和维护。
- 代码中的重复逻辑(判断正方形或矩形)造成了冗余。
- 函数没有清晰的接口和抽象层,外部调用者需要了解内部的实现细节。
接下来,我们看一个封装良好的可扩展、可维护、可复用的代码的例子:
class Shape {
constructor(length, width) {
this.length = length;
this.width = width;
}
calculateArea() {
if (this.length > 0 && this.width > 0) {
return this.length * this.width;
} else {
return null;
}
}
isSquare() {
return this.length === this.width;
}
}
class Rectangle extends Shape {
constructor(length, width) {
super(length, width);
this.shapeType = "Rectangle";
}
}
class Square extends Shape {
constructor(side) {
super(side, side);
this.shapeType = "Square";
}
}
上述代码使用面向对象的方式进行了封装,具有以下优点:
- 代码被组织成类,每个类负责特定的功能。Shape类负责一般的形状计算,Rectangle和Square类分别负责矩形和正方形的计算。
- 类之间的继承关系和构造函数的重写提供了清晰的接口和抽象层,外部调用者只需要了解Shape、Rectangle和Square类的公共方法即可使用。
代码具有良好的可扩展性和可复用性。如果需要添加其他形状的计算,只需创建新的类并继承Shape类即可。 - 代码易于理解和维护,逻辑清晰,减少了重复的逻辑。
总结来说,封装良好的代码通过类和对象的组织,清晰的接口和抽象层,以及良好的结构设计,提供了可扩展、可维护、可复用的代码。与此相反,面条代码缺乏结构和组织,逻辑混乱,难以理解和维护。
这里代码的“神”指的就是:学到了可维护,可扩展,可复用的编程思想,以神来指导编程。
其中编码常用的“神”还有如下:
- 模块化:代码被分解成小而独立的模块,每个模块负责特定的功能。这种模块化结构使得代码更易于理解和修改。
- 单一职责原则:每个模块或类只负责一个特定的功能,遵循单一职责原则。这有助于代码的可维护性和可复用性。
高内聚低耦合:模块之间的依赖关系尽量降低,模块内部的组件和功能紧密相关。这样可以减少代码的耦合度,提高代码的可维护性和可扩展性。 - 清晰的接口和抽象:良好封装的代码会提供清晰的接口和抽象层,使得外部使用者能够简单地使用代码,而不需要了解内部的实现细节。
- 代码复用:封装良好的代码可以被多个地方复用,避免了重复编写类似的代码,提高了开发效率。
- 易于测试:良好封装的代码容易进行单元测试和集成测试,因为代码的功能被清晰地分割和组织。
最后,创作不易插播一则广告:
【「合图图」产品介绍】
- 主要功能为:本地添加相册图片进行无限长图高清拼接,各种布局拼接等
- 安全:无后台服务,全程设备本地运行,隐私100%安全;
- 高效:自由布局+实时预览,效果所见即所得;
- 高清:秒生高清拼图,一键保存相册。
- 立即体验 →合图图 或微信小程序搜索「合图图」