The art of programming is the skill of controlling complexity.
在线阅读地址 Eloquent JavaScript 已更新至第二版
降低使用复杂度
var total = 0, count = 1;
while (count <= 10) {
total += count;
count += 1;
}
print(total);
如果通过自定义的 sum, range 组成,那么复杂度将大大降低。
print(sum(range(1, 10)));
大家更喜欢 Python 而不是 Javascript, 也就是因为 Python 可读性更好,而实际上这些 都可以通过自定义的 js 函数来解决。
所以,要熟练使用一门语言,并爱上这门语言,必然要做一些自己的封装。实际上,我们 看 AngularJS 的源代码就能发现,许多的封装,例如 angular.forEach 就使 loop array 和 object 更加方便。Redis 的代码里同样能看到作者的大量封装,以符合自己的 使用习惯。
讨厌一样东西,有时候太武断
看了作者的观点,我好惭愧。作者对 javascript 不便捷的地方做了大量的封装,而我只 是一味的抱怨。所以,有时候我们在争论一项技术是否优于另一项时,显得有些武断,当 我们认识到其缺陷时,为什么第一反应不是去完善他呢?哈哈
为什么对 javascript 的第一印象就是丑陋
如果我第一次看到的 javascript 代码都是 AngularJS 源代码那样的质量,我想我一定 不会有 js 是一门丑陋的语言这种印象。说到底,丑陋跟语言无关,跟人有关。所以,学 习高手的代码才是正道。
选择入门书也很重要,例如这本书的作者就能瞬间提升你对 js 的兴趣,而不想其他教程 让你不断体会到枯燥。
如何写一个自己的 js module 使 js 写起来更顺手
必然要有自己的 namespace, e.g. eloquent.range(10), 如何定义 namespace 才更顺手。
尝试一:
var eloquent = {
version: "0.0.1",
range: function(upto) {
...
}
};
感觉 key, value 的方式好丑。。。且不方便区分私有函数和 public method。
尝试二:
var eloquent = new Object();
eloquent.version = "0.0.1";
eloquent.range = function(upto) {
...
};
也不方便在 namespace 中定义私有函数,且要不断加 eloquent 前缀,好麻烦。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式