【吐槽】为什么不能写这样的代码
-
这是一段“男默女泪”的代码,看到它我完全是崩溃的!这段代码用
JavaScript
来创建div
对象,设置样式,常规的做法应该是在html
里声明div
,在css
里面声明样式。这么做的问题在哪?
我们可以考虑一下,程序的本质是什么?
Pascal语言之父 Niklaus Wirth 在70年代提出:Program = Data Structure + Algorithm,
随后逻辑学家和计算机科学家 R Kowalski 进一步提出:Algorithm = Logic + Control。
左耳朵耗子陈皓总结:Program = Logic + Control, 程序的本质复杂性就是逻辑,非本质复杂性就是控制。
我很喜欢这个定义,程序就是逻辑加上控制。所谓逻辑就是要 “做什么”,控制就是 “怎么做”。更具体一些,逻辑就是一个函数,输入与输出之间有映射规则,控制就是常见的流程控制(条件,循环,顺序等),程序的本质复杂性在于逻辑,而非本质复杂性在于控制。
好的代码,应该尽量让逻辑和控制这两个维度保持正交性。我们造轮子的目的,也就是为了尽量简化控制,封装过程式的代码,暴露声明式的接口。
上面这段代码的问题在于,反其道而行之。浏览就是器已经造好的轮子,让我们可以用
html
和css
写出声明式的代码,javascript
被设计用来动态地修改它们。而这段代码是,用javascript
生成静态代码,抛弃了html
和css
的声明式写法,使用过程式的写法,这可以叫做反轮子,写出了反轮子的代码。我对这种代码,嗤之以鼻!
Reference
https://coolshell.cn/articles/10652.html
-
666666
-
男默女泪666
-
6666666666