扫码关注官方订阅号
如何写出优雅的前端程序?特别是在Web App这样的业务场景之下,JavaScript代码就更加重要了。 怎么样才能够写出健壮的,可维护的的前端程序。希望可以从各个方面进行解答,而不单单是在编码规范这一个方面。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
健壮和可维护,要从两个方面来谈。
还是那句老生常谈:“高内聚,低耦合”。
你的模块依赖其他模块的程度越低,接口越少越明确,传递的内容越显而易见,整个程序就越容易维护。
群里 @怡红公子 等群友曾经讨论得出过这样一个结论:“如果觉得代码恶心但是可用,就把代码隐藏(封装)起来”。我觉得这很可行。
从这个意义上讲,Sea.js等模块依赖性管理的组件,是写JS大程序最为不可缺少的基础工具。
不客气的说,JS是设计极其恶劣,充满着各种隐喻、假设和不良特性的,一门粗制滥造的有用语言。“JavaScript is VERY faulty”,不止我一个人这么说。
所以提到JS本身的可维护性,重要的就在于一定要躲开JS的若干大坑。例如:
undefined
require
define
如果要全方位的解答,大致也就像这样“只有原则没有细则”,全方位的都写出来真的太多。
“希望从各个方面得到解答”的问法,气氛上犹如“请从头到尾教我怎么做一个网站”,是Help Vampire的典型表现,还是希望尽量避免。
回答还是要看问题来取舍的,要不然岂不是这样的问题,都可以找一篇《优秀JS代码的xxx条原则》复制粘贴?
别笑,国内最大的低质量问答社区——百度知道就是这样做的!
以下解答以我一时想得起来的为限,全部关于如何对抗“一坨一坨”的观感:
for (i=0; i<n; i++)
for(i=0;i<n;i++)
array1.tail(5)
array_tail(array1, 5)
obj2 = obj1.filt1().filt2().filt3()
「代码段1」
obj2 = obj1.filt1(); obj2 = obj2.filt2(); obj2 = obj2.filt3();
「代码段2」
obj2 = cls1_filt3(cls1_filt2(cls1_filt1(obj1)));
1)必要的注释 2)命名规范 3)缩进换行 4)对齐 5)使用代码美化工具(如果有的话)
我觉得相比于写法的各有特色;
var PI = 3.14, win = window, obj = {}; obj.methodSomething = function () {}; jQuery("").m().m().m(); (function() {})();
vs
var PI = 3.14 var win = window var obj = { methodSomething: function() { } , k: null } ;!function() {}()
风格不同是一层面,更难的是如何清晰的表达出想法, 最理想的"代码即文档" ps: 其实我是来测试 插入代码为啥不换行滴...
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
健壮和可维护,要从两个方面来谈。
非JS特有
还是那句老生常谈:“高内聚,低耦合”。
你的模块依赖其他模块的程度越低,接口越少越明确,传递的内容越显而易见,整个程序就越容易维护。
群里 @怡红公子 等群友曾经讨论得出过这样一个结论:“如果觉得代码恶心但是可用,就把代码隐藏(封装)起来”。我觉得这很可行。
从这个意义上讲,Sea.js等模块依赖性管理的组件,是写JS大程序最为不可缺少的基础工具。
JS特有
不客气的说,JS是设计极其恶劣,充满着各种隐喻、假设和不良特性的,一门粗制滥造的有用语言。“JavaScript is VERY faulty”,不止我一个人这么说。
所以提到JS本身的可维护性,重要的就在于一定要躲开JS的若干大坑。例如:
undefined,require,define等,JS本身或常用库所采用的名称。如果要全方位的解答,大致也就像这样“只有原则没有细则”,全方位的都写出来真的太多。
“希望从各个方面得到解答”的问法,气氛上犹如“请从头到尾教我怎么做一个网站”,是Help Vampire的典型表现,还是希望尽量避免。
回答还是要看问题来取舍的,要不然岂不是这样的问题,都可以找一篇《优秀JS代码的xxx条原则》复制粘贴?
别笑,国内最大的低质量问答社区——百度知道就是这样做的!
以下解答以我一时想得起来的为限,全部关于如何对抗“一坨一坨”的观感:
for (i=0; i<n; i++)观感肯定优于for(i=0;i<n;i++)。array1.tail(5)观感肯定优于array_tail(array1, 5)。(只是随意的例子,array操作似乎真的不必如此大费周章)obj2 = obj1.filt1().filt2().filt3()肯定优于右边的「代码段1」或「代码段2」。「代码段1」
「代码段2」
1)必要的注释
2)命名规范
3)缩进换行
4)对齐
5)使用代码美化工具(如果有的话)
我觉得相比于写法的各有特色;
vs
风格不同是一层面,更难的是如何清晰的表达出想法,
最理想的"代码即文档"
ps: 其实我是来测试 插入代码为啥不换行滴...