说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

编写代码?先熟悉一下编程语言界限吧!

HTML文档下载 WORD文档下载 PDF文档下载
把每个编程语言当作是一个集合,从语言设计到编程格式,它们一定是含有交集的。为了解决因“交集”而带来的代码编程错误,文中详细分析了HTML、CSS、JavaScript、Server-side Languages和SQL之间所存在怎样的界限。

本文作者Cory House是一个软件开发者,笃信清洁代码和务实开发。最近他总结了不同的编程语言之间存在的界限规则,他还认为不了解编程语言之间存在的界线无异于选择错误的开发工具,要想简化、加快软件开发过程,了解语言之间的异同是必不可少的。(以下是编译内容)

如今开发者有很多种途径去解决编程问题,不管是利用大量的类库还是各种各样的技术工具。当然了,随便选择一些错误的工具导致的代码错误也是工作里最头疼的事情。另外总结出,不了解工具与工具之间、语言与语言之间的界限所带来的风险和选错工具带来的风险是一样的。下面这几个常用的构建Web App的工具,每一个都有特定的使用目的。

  • HTML:为编写的内容提供语义标记。
  • CSS:将设计风格从标记里区分出来。 
  • JavaScript:提供表现行为。
  • Server-side Languages:管理商业逻辑。
  • SQL:对RDBMS数据存取和数据操作有很大的帮助。

下面就来分析一下不同的技术之间存在哪些界限和互动点,以及它们是怎样给开发者在工作当中制造麻烦的。

HTML和JavaScript之间的界限

尽量避免将HTML放入JavaScript字符串里,不然出现的结果可能会像这样:


值得注意的是,如何在for循环语句下面生成一个HTML行,然后设置成一个称之为carRow的变量。将HTML放入JavaScript字符串里,这样就能更灵活的将HTLM插入在网页上,但应该标记为本地 HTML。当选择一个模板解决方案的时候,需要寻找一个简单的、较旧的HTML作为模板来源。KnockoutJS和AngularJS模板都是使用这一方法的。

如果你想把HTML储存在.js文件里的话,必须三思而后行,因为JavaScript是典型的用来储存标记的错误工具——也就是说,保持本土化没什么意义可言了(代码颜色、语法检查等等)。

另一方面,避免将复杂的JavaScript放在HTML里的DOM基础上:


有的人直接把JavaScript放在HTML里面,但是这种通过直接插入行为到标记里的方法使得问题变得更为混淆,同时还消除了缓存和重复使用的机会。

这种低调的JavaScript行为的确降低了上述的问题出现几率,但是新的框架像Knockout和Angular是可以将JavaScript推到HTML标记里的。不过在HTML里简单声明一下标记还是有好处的,因为当绑定比较简单的时候标记很容易被发现,并具有可读性。但要小心,涉及到很多简单声明绑定的时候,JavaScript属于.js文件,HTML属于.html文件。

HTML和SQL之间的界限 

这里有两个简单的案例:忽略了数据和HTML之间的重要界限所导致的现象。


关系型数据库应该包含原始规范化数据,这样的数据也是多用途的。因此,存储HTML在DB或注入HTML在查询结果里,如上所示都是有问题的。它将整个演示和数据存储在一起使得重复使用变得很困难。

内容管理系统是一个常见的问题,在这里用户必须能够存储和管理在数据库里的HTML。就相当于利用数据重复使用和数据规范化来换取最终用户管理权。除此之外,应该最大限度的避免混合表示和混合数据,因为它们会分离关注点,必须第一时间处理掉。

HTML和CSS之间的界限

HTML和CSS 之间的“过节”相对简单,只要避免做这样的事就行了:


人们经常将设计风格放入线上的HTML里,但是这样会把语义标记和风格搞混淆。

分离关注点的同时还消除了缓存和重复使用CSS的机会。DRY原理在这里比较适用:如果你想把一个风格使用在多个点上,那就需要事先声明这个风格是在一个单独的样式表里的。

SQL和Server-side Language之间的界限

利用一个服务器端语言来创建高层次的动态SQL是很容易的,就像使用C#字符串生成SQL语句一样简单,但是存储的程序和ORM通常会提供一个更安全、更优雅的方法来生成动态的SQL。编写动态SQL字符串的同时也打开了通往“SQL资料隐码攻击漏洞”的大门,并且取消了DBA管理和提高查询性能的机会。含有SQL字符串的App在运行时也存在很高的风险,尤其是当模式发生变化的时候。ORM向数据库提供增强型的类型接口,可是当模式不能够和现有的数据库查询同步的时候,这些数据库就无法编译了。

JavaScript和Server-side Language之间的界限

在服务器上编写动态JavaScript字符串,会出现这样的情况:


这是误用工具所出现的最常见的现象:使用一个Server-side Language生成动态的JavaScript,大多数情况下JavaScript应该保留在.js文件里,从服务器里返还出来的JSON可以提供更多的活力。

所以在你很投入的写出下一行代码的时候,最好考虑一下你离这些编程语言的边界是不是很近?或者说靠哪一边更近?热爱清洁代码的程序员应该努力保持本地化:文件扩展名在技术方面应该是一个很好的指示器。

保持本地化

本地化的重要性不只是针对于JavaScript,当你发现在保持本地化的同时没什么取舍可选的时候,你只能和字符串较劲了。不过这其中的底线是,避免通过字符串把一种编程语言编写在另一种编程语言或者是格式里。不过目前在比较流行的编程语言里,解决这样的问题首先要考虑到动态化,并利用类库来生成这样的编程格式。要想通过字符串创造这么多东西就需要程序员同时理解两种语言之间的界限。所以,一旦你发现一个文件里有两种编程语言的话,最好先考虑如何使用更好的、更特殊的方法去消除其中的一个编程语言。                                                                     (编译/薛梁  校审/付江)

原文:BitNative

用DELPHI中Canvas特性开发图形软件 用构件变换法实现动画效果-Delphi资料 在Delphi中使用动态图标 在Delphi中显示Windows图标 在多媒体文件中批量抓取图象-Delphi资料 怎样读出不同格式图形的高和宽-Delphi资料 怎样使用PageUp、PageDown滚动窗体-Delphi资料 怎样制作全透明的窗口-Delphi资料 DELPHI:FormContainer简易手册 Delphi:用FormContainer渐变效果 Delphi4的窗口融合技术 Delphi使用技巧ABC Delphi使用技巧四则 DELPHI中自适应表单的实现 TList的用法-Delphi资料 不规则窗口的实现-Delphi资料 不用标题栏也移动窗体-Delphi资料 窗口建立和关闭时的特效-Delphi资料 窗口中状态行的显示-Delphi资料 动态提示的可视化实现-Delphi资料 动态修改显示器分辨率-Delphi资料 对数据库中的数据进行处理-Delphi资料 改变壁纸-Delphi资料 改变元件的视窗式样-Delphi资料 给MDI主窗口加背景-Delphi资料 更改StatusBar为黑底绿字-Delphi资料 画布的圆拷贝和直线拷贝-Delphi资料 回车替Tab下移控件-Delphi资料 获取系统颜色-Delphi资料 渐变色窗口背景-Delphi资料 控件深度投影和阴影效果的实现-Delphi资料 VBA 如何调用 DotNet's WebService ?? dbexpress为什么在插入带自增长字段时候出错? 为什么不同的查询语句会有不同的效率? 我现在要开发一个游戏大厅,谁能帮我提供一些技术参数>?在线等待。 不是水贴:请求帮助,有上海师范大学的请进 紧急!那位有clearcase winnt 4.2 的注册码,高分相送!!!!! 论坛的表格要在注意什么?《我是个菜》 大家帮忙介绍一本书 帮帮我怎么把系统还原占用的空间还给我——老鸟们帮忙! 过滤问题:Query需要先选择一个表(通过ComboBox)然后从2个Edit内输入两个条件 关于stringgrid的翻页问题 寻找电脑方面的朋友 大家好,帮忙做做这题 大家如何保存自己地提问?? JTable怎样一行一行地显示? 我的程序 无边框窗口显示问题 求教各位大虾 VB数据库 如何知道某字段有这个姓名记录? 我想学一种C++的集成环境,是C++BUILDER还是VC 我完全没基础,请帮我走出第一步:汇编工具在哪下载?我想试试那个“两只老虎” 如何在还原Cookie中的中文字? 制做彩色立体阴影怎么做啊! 我的程序 请问有没有这样的公司? 2000 server 无法使用ADSL????? 我要和她分手。。。。。。。。 一个不错的网站,进来看一下吧! map 使用的几个小问题 請大家幫我做這個的標準譯文,謝謝!!! 就像做考題一樣,不要只說它在概意思! 新手上路第一问!Hello World都不能运行 这样的SQL语句怎样转化成能在mysql下运行的 学汇编,应用在什么地方?单从功能来说,汇编强大还是C++强大 replace语句的使用方法: 一个不错的网站,进来看一下吧! 关于软加密的问题???? 请高手,两个简单的问题?在线等待???急急!!! 关于ADOQuery1.refresh的问题 我的程序 一个不错的网站,进来看一下吧! 求DELPHI开发ACTIVEX用于WEB打印指定内容的实现说明。 dreamweaver中的一个小问题,,,急!急!急! 我的程序 100分求救啊!使用TEvent对象要包含什么头文件啊? 如何使SYNTAXFROMSQL不从RDBMS中的extended attribute system tables中获取数据 一个不错的网站,进来看一下吧! 几个菜鸟问题 求教:如何配准图形和图象 如果不会C语言,也不会汇编语言,那么学C++困难还是学汇编困难 请各位帮忙超简单,散分! 离子数是怎么算的? 您好,我想问一下,D选项所指的溶液只是氢氧化钙溶液吗?为什么不是氢氧化钙和碳酸钾溶液之和啊?如果D选项只考虑氢氧化钙溶液那B选项为什么要考虑2个溶液的质量呢、?19、下列各组中的物 寻找一种白色的粉末,可能是有机物来的!1.这粉末能较好溶于水,在水中时会漂浮在水面(摸起来有软软粘粘的).2.冲水时有泡沫产生,但不多,PH值可能偏碱性(但不确定).3.本人猜测这可能是 铁离子的单位电荷怎么算?为什么说每个铁离子带三个正电荷?铁的最外层的电子数是多少?很简单的问题啊......上课没听懂不好意思问同学 帮帮忙啊TAT 几种常见动物毛皮的鉴别 为什么冬瓜表面会有一层白色的粉末 化合物表示的意义:如naoh 如下图,两个正方形拼在一起,求图中阴影部分的面积 焊件超声波探伤需焊接48小时后吗? 选举权作为公民的一项基本政治权利是由哪部法律规定的 分度盘的分度精度和重复精度的单位是什么?如问题补充所示,40”的40后面单位是什么? 两个正电荷和一个负电荷之间的电场线两个正电荷紧挨着,在一个正电荷旁边不远处有一负电荷,三个电荷带电量相等,请问这三个电荷间的电场线如何画?望各位不吝赐教! 寻求英语听力材料我对听力中的数字不是很敏感,想找一些专门训练数字的听力材料.另外,不知道哪里有那种自动断句的听力材料?哪位朋友有这方面的信息,希望可以告诉我. 加工中心数控分度盘首次使用没松开分度盘就回零了,以后会影响分度的精度吗 化学选择题,关于氧化还原反应的.在线等拜托各位了 3Q 将过氧化钠固体投入到FeSO4溶液中,开始有白色沉淀生成,接着迅速变为灰绿色,最后变为红褐色.这句话对吗? FeS+HNO3反应会生成S沉淀吗?生成物是什么?(正确式子加配平) 含最高价元素的化合物,一定具有强氧化性吗? FeSo4溶液与NaOH反应生成灰白色沉淀,迅速变成灰绿色,最后变成红褐色.请问灰绿色是怎么来的 为什么说电子发生了转移?要理由! 硝酸钾的钾是氧化钾 请帮我看看无机化学里弟5小题和弟6小题应该怎么做啊!谢谢!急求! 用5个正方形拼搭而成的物体,从正面看到的是“竖着的两个正方形”,有几种不同的搭法?(画图) 电场线始于正电荷,止于负电荷……电场线始于正电荷,止于负电荷.是单纯只方向问题,还是真的事实.比如一个正电荷被负电荷所组成的球面围住了.那么这个正电荷的电场能不能影响到负电荷 ,求解第四题的圈1.和五六小题. "碘酸钾"是不是"碘"? 为什么电场线总是始于正电荷,终止于负电荷?请说明理由 急等 第十题第三小题 高一化学氧化还原反应一节!含氮废水进入水体对环境造成的污染越来越严重,某课外兴趣小组先测定某废水中含硝酸根离子的离子浓度是3*10的负四次方摩尔每升,而后用金属铝将硝酸根还原为 碘伏可以和酒精掺在一起吗记得在医院打针医生会在皮肤上涂碘酒,那么碘酒是不是究竟和碘伏的混合物?还是有专门的碘酒? 一道无机化学已知标准电极电势,φoCu2+/cu=+0.34V,φoSn4+/ Sn2+=+0.151V.下列离子中,氧化能力最强的是( )A.Sn2+ B.Sn4+ C.Cu D.Cu2+ 在处理的废水过程中为什么突然会变成黄色 硝酸钾含100mg氮的意思是?怎么计算? 婴儿长期在喧闹的环境中对孩子有影响吗3个月的小孩子长期居住在KTV环境中,KTV包间传出的歌声对孩子有影响吗,主要是晚上8点-12点期间,孩子和我们一起居住由于工作原因 印染废水中的黄色怎样去除?我正在做一个污水处理系统,现在的情况是COD已经到了60左右,但是色度还得100多,水呈那种淡黄色,原水是印染废水和发电厂的水,COD1200左右,颜色有时是蓝的,有时是 任何一个碳原子都只连1个氢原子和3个碳原子这是什么有机物 急求环境对于孩子的影响英语作文····!急求环境对于孩子的影响英语作文~ 科学兴趣小组在调查一化工厂时,发现有个车间排出的废水澄清透明,呈黄色.为测定该废水中所含的物质,他们进行如下实验(假设能发生的反应均恰好完全反应):(1)用pH试纸测试,测得pH 我的世界最新版本是多少?我看到有1.8的,不知道是不是最新的,还有我看视频上有的版本材料做得略微好看些是怎么回事?小地图是怎么来的? 想带孩子去和外面多接触一下~想去一个干净,卫生的环境.给我推荐下 初三化学兴趣小组在调查一化工厂是,发现有个车间排出的废水澄清透明呈蓝色兴趣小组在调查一化工厂是,发现有个车间排出的废水澄清透明呈蓝色为测定该废水中所含的物质,他们进行如下 BASO3是不是沉淀物 常用的金属抛光膏有哪几种? 某校化学兴趣小组对附近一化工厂排出的污水进行监测.发现污水中含某些金属离子对水质和环境造成了严重污染.他们曾对该厂排出的污水取样、过滤,对滤液进行了多次检测,其中有三次检测 solidworks钣金零件中要焊接一根管子,管子是焊接在板材中的,不是焊接在表面,想知道3维展开图怎么画? 税收 我巧妙的避开了所有正确答案政治水平测 税收我巧妙的避开了所有正确答案 水溶液在加热时PH值变小的是...答案是氯化钠 可是为什么呢?加热电离强,c(H+)↑ c(OH-)↑ 所以PH↓ 那么盐酸呢? 玉米芽怎么生 低于一个点的税负是什么意思 绣眉注意事项有哪些? 怎样做玉米芽率 是中性词吗 zn(no3)2会和什么反应生成气体 外伤用碘伏好还是酒精外伤口消毒用哪个好? 公民在法律面前一律平等() A.是我国社会主义法实施的基本原则 B.是我国社会主义立法的基本原则 晚上,好端端放在地板上空暖瓶,突然爆炸,暖瓶是老式的铁皮暖瓶.请专家解释. 皮带是什么带动 作为公民,我们可以行使哪些权利? 如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)*0.3048.现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸.输入格式:输入 材料一中涉及的通商口岸与经济特区在分布上有何相似之处 伊拉克10月恐怖袭击暴力冲突致死近千洛杉矶国际机场发生枪击事件 至少两人洛杉矶国际机场发生枪击事件 一嫌疑人希腊首都雅典发生枪击事件美国三大汽车制造商10月销量普增巴基斯坦塔利班证实其头目被美军无人机洛杉矶国际机场发生枪击事件 一嫌疑人洛杉矶国际机场发生枪击事件 嫌犯被执洛杉矶机场枪击案至少3人受伤 包括一洛杉矶国际机场发生枪击事件 至少两人洛杉矶国际机场发生枪击事件 一嫌疑人伦敦股市股指1日收盘基本持平斯诺登密会德议员 称愿为NSA窃听事斯诺登密会德议员 称愿为NSA窃听事美国洛杉矶国际机场发生枪击事件 至少德国法兰克福股市DAX指数1日下跌波黑有轨电车相撞致40多人受轻伤美国洛杉矶国际机场发生枪击案湖南岳阳三姐弟上学途中遭绑架杀害 嫌尼泊尔张灯结彩庆“灯节”:首日敬乌鸦日俄政府在东京举行外长防长会谈兰德报告:中美军力差距变小 最终取决如何避免“好同志”沦为阶下囚因与儿子出轨,歌手直播中狂殴女友发明“傻瓜化”技术的农业专家深入调研为提案特定细胞帮助动物适应季节变化长沙:古装拜月祈福会陈俊愉园林教育基金会成立中国国际地位的再确认与国际影响的再提习近平出席全球妇女峰会并发表讲话“萌虎”面世刘延东率中央代表团分团赴和田和阿克苏海南备好旅游盛宴邀客过长假山东荣成:诚信是第二张“身份证”首届“南京青年文化周”开幕指导南针 重要宣言上海自贸区海关创新制度成效凸显新媒体一日·9月27日俞正声率中央代表团赴莎车县慰问考察《人文颂》再度奏响联合国总部中国力量助南南合作落在实处
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘