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

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

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

红帽将产品转移到Apache社区 Impala是如何提升3~90倍查询效率的? 云中保障数据安全及完整性必须防范的遗留问题 VMware推出移动性平台:VMware Horizon Suite 移动周报:全球最大校园Hackathon的参赛宝典 Unity3D首届游戏创意设计大赛开始报名 中国日报:向移动新媒体蜕变 C#五子棋程序设计 Mozilla宣布推出Firefox OS 面临四大问题 Ruby 2系列首个稳定版 Ruby 2.0.0-P0发布 微软改进Windows Blue搜索 系统或今夏推出 移动新趋势:扁平化设计 vs. 拟物化设计(下篇) 传奇程序员:Minecraft开发者Notch大神 让沟通更便捷 ConnectYard宣布推出全新的Web API 在Hadoop上运行SQL:程序员需知晓的13种数据工具 怎样用好Eucalyptus? AWS攻势变猛,Rackspace主动降价CDN与云存储 惠普将于下季度推出低功耗的Moonshot服务器 webOS复活!LG收购webOS用于智能电视 那些因为HTML5而将消亡的产品 初窥iWatch用户界面:开创基于时间的全新体验 如何编写出拥抱变化的代码? 20个优秀的前端框架 以AWS和vCloud为标杆看四大开源平台的定位 桌面集成开发环境五年内必将“死亡”? 助影人圆梦奥斯卡 8mm相机应用其实很平庸 苹果应用审查团队叫停Cookie追踪技术 时势造英雄:中国早期O2O创业故事 iOS开发与Android开发的四大不同 “消极抵抗”AWS OpsWork?RightScale首次宣布转售并支持GCE 2012年VC都把钱投给了哪些大数据初创公司? 浮点数的转换成字符串?? (在线等待) 100分!! Oracle字符集的问题!高分求解! 关于asp.net中如何控制Response.Write()输出的问题! 高手指点,怎样在程序运行时修改DataWindow的Sql语句? 如何在使用Quick report的程序中设置打印机,选择打印机 寻求字符串比较算法,详情请到里面! 我在一个类中调用别外一个类的public成员函数,产生的错误是什么意思? 有哪位高人指点一下,散分了! 能否使用javascript检测客户端是否安装了某个软件? 水园公务帖[2003.03.04—2003.03.09] 请教,如何循环的查找到一个父窗口?出错代码如下,在关闭时出错。原因出在我的相互赋值上面 我想问一下,大家所在的公司软件项目提成都是怎么分配的? 在photoshop里存入什么格式,可以在Coreldraw里,做了drop shodow功能的图象显现出来??? 如何运行JBUILDER编译的程序 zju1222的数据是不是有错误呀? 哪里有2002年高程试题 关于控件 请教:在SQL SERVER2000里面怎样让值显示为******? B/S下如何使用.css?--答对加分,谢谢 200分,ASP.NET如何访问COM+组件?????? JBuider 6 的问题?-->小问题,用过的进来看看!!! 感情问题,请各位帮帮我!!!!!! (校园网)门户网站的设计与组建 关于如何动态分配内存的一个问题,请指教(50分) 在winForm下可以用session 吗? 跟网页下的有什么不同呢? 用orcle搭建一个客户服务器平台,该如何搭建?(通过vc的应用程序在客户端访问)--都有分给的. 初学websnanp,请教几个小问题? 问一个基础问题? 怎样在MDI框架下,显示一个CFORMVIEW类的子窗口? AUTOCAD图形打印驱动程序设计 AUTOCAD图形打印驱动程序设计 情帮忙(50分) 一个水晶报表的问题 有人真正使用过XML开发程序么? 我想买书 pb7.0哪里可以下载? AUTOCAD图形打印驱动程序设计 贺猪猪成星,散分给水友,天下皆欢颜!!! WinRAR的压缩密码怎么取消啊?快,快,急需!!! 没有权限打开names.nsf的问题? 复选框的问题,在线等待!!! 没有权限打开names.nsf的问题? IE浏览器显示的字体不是默认的,变成了空心字体。如何改成系统默认的字体?(win98+IE5.0) 寻找高手 关于协议的问题 求助!能把一个字段内容分解的函数? Servlet问题?(急等,立结) oleconnection 支不支持sybase的连接,不通过odbc如何连接Sybase高手请进!急啊!!! 关于return的问题 为何内存消耗在不断增长? 浏览器类型 求文件长度? 公义一词怎么解释 为什么有的纸遇到水蒸气会变黑 大车上的沥青怎样才能尽快的除去 义字字形解释 铵态氮肥与草木灰不能混合施用的原因‘草木灰K2CO3是碱性的,会水解生成OH-,会与氮肥NH4HCO3中的NH4+结合生成NH3和H2O.那么为什么就是NH4+ +OH- = NH3 + H2O而不是NH4+ + OH- = NH4OH(可逆) 交变电流有效值怎么求 廉义词的解释 谁能帮我讲解一下乙肝病毒DNA测定结果~HBV-DNA 结果是 蟾蜍有没有天敌? 燃料是不是只要氧气和火种就可以燃烧?不用其他的气体吗? 乙肝病毒DNA定量检测测定值1.87E+7 用什么词形容一个善变的男人更恰当?针对感情的方面 哪种可燃物不能在氧气中燃烧,能在其他气体中燃烧 共聚甲醛(POM)磨成的粉末如果进入到胃里会被胃酸分解成甲醛吗?家里某知名品牌的搅拌机的轴心是由共聚甲醛(POM)做成的,使用过程中竟然因磨损产生黑色的油油的液体并进入到搅拌的 蟾蜍.狼.田鼠.螃蟹.野兔的天敌各是什么 物体受到垂直斜面向上和向下的力,为什么所受摩擦力的大小不变?垂直斜面向上和向下的力可以分别分解为沿竖直方向向上和向下的力,那不就是等于减小了和增加了重力吗?那它们的合力沿斜 聚甲醛是通过甲醛加聚得到的么? 【次北固山下】:诗的颔联中的“阔”表现了一幅什么样的情景?【接上】本诗表达了漂泊在外的游子对家乡亲人深切的思念之情.你认为诗中的哪一处句子最能突出的表达这种思想感情?为什 NaOH和Ba(OH)2哪个吸收CO2的效果好?KOH呢? 聚甲醛制品是否含有甲醛聚甲醛在成型过程中会有部分甲醛单体析出,甲醛单体会不会残留在最后制品当中.产品可不可以做到无甲醛 下列属于复合化肥化学式的是 A KCL B NH4HCO3 C NH4H2PO4 D Ca3(PO4)2 选出答案后做个具体解释 谢谢 《我与地坛》中为什么“我”会认为死是一件不必急于求成的事,死是一个必然会降临的节日? 玻璃密封罐新买的想放些糖果,但瓶子里有一种很难味的味道,怎么才能除掉呢. 氢氧化镭是不是两性氢氧化物 国庆节这天国家会做那些事 E处人口稀少的原因是(A) A空气稀薄 B气候寒冷 C环境湿热 D天气干热请问A为什么对,C为什么错? 氢氧化铊是两性氢氧化物吗? 亲人过世的第一年是清明前去扫墓,还是清明节那天去扫墓?民俗上有什么说法没有?谁能给个答案. 单宁酸的物性? 我觉得你太瘦了,你应该增肥到89斤才配你的升高.英语翻译谢谢 形容人不爱说话次 大家好,24KW的发电机请问可以接220V的电压吗? 不会发胖翻译 植物的茎有哪些类型? 如图所示,将物体匀速拉到斜面顶部,试推导斜面上物体受到的摩擦力大小为f=F(1-η) 发电机发的电压是400V,那线电压380V,相电压220V他们间的关系和用户不是用220V的电压吗他们哪个电压才是有实际用处的 关于DNA提取问题世界上最早能够从骨头里提取DNA的是哪个国家,哪一年?求教! 高中电离平衡问题 氨水和盐酸混合...氨水和盐酸混合氨水过量 还要考虑氨根离子水解么 我国的季风气候对农业生产最有利的是?冬季影响我国的季风是?特点是什么?夏季影响我国的季风是?分别来自哪两个大洋,特点是什么?谢谢每一位回答问题的人:-) DNA提取的问题DNA提取时,加入蛋白酶K,SDS对蛋白酶K本身有没有影响,因为蛋白酶K也是蛋白啊, 申屠蟠重节义 翻译 速求 新手 没多少分 单纯的信风、西风、极低东风对气候有什么影响?湘教版高一地理中关于气压带风带对气候的影响中有一练习,填表信风、西风、极低东风对气候有什么影响?不知道怎么填 DNA提取的相关问题请问各位仁兄:DNA提取过程中用到的试剂,哪些是需要现用现配的? 申屠蟠中节义 的 翻译 6.单宁酸,其化学式为C76H52O46,下列关于单宁酸的说法不正确的是 ( )6.安徽省盛产茶叶,“太平猴魁”“黄山毛峰”等绿茶享誉海内外.绿茶中的单宁酸具有抑制血压上升、清热解毒、抗癌等功 正常情况下,不发生DNA复制的是癌细胞,还是成熟的表皮细胞? “君子义以为质,得义则重,失义则轻,由义为荣,背义为辱”是什么意思?快~~~ 保险丝的熔断电流是多大? 富而可求也,虽执鞭之士,吾亦为之.如不可求,从吾所好.富如何理解?论语十则里的.其争议颇多. 90号沥青搁时间久了都有那些变化? 下列对化学式的说法中正确的是()理由.A.任何物质都有化学式 B.化学式是对物质组成的真实反映 C.用元素符号表示的式子都是化学式 D.不稳定的物质写不出化学式 如何理解:“士不可不弘毅,任重而道远” 与有丝分裂有关的细胞器, EB病毒抗体和EBV-VCA-Iga的区别?EBV-DNA又是什么?EB病毒抗体是不是就是EBV-Ab?跟EBV-VCA-Iga有什么区别?到底哪个跟鼻咽癌有相关性啊?我EB病毒抗体阴性,EBV-VCA-Iga阳性,EBV-DNA阴性,这个问题大不大? “传曰‘刑不上大夫’此言士节不可不勉励也”是什么意思 有丝分裂中细胞器是如何分配的 EBV病毒是什么? 解释的的进义词 如何由丁醇制备2 丁醇? 宇宙中比铁重的元素是从哪里来的 特赦法案考验泰国政局王毅强调做好领事服务 打造海外民生工央视调查:在京韩国整容医生多无中国行新闻广电总局要求各地查处新闻敲诈有偿中国专家将参与禁化武组织核查叙利亚化印尼外长召见澳洲大使 要求就窃听报道日“苍龙”级潜水艇黑龙号下水 剑锋直俄总理敦促乌克兰考虑“入欧”后果日本外务大臣明年春季将访俄就和平条约中国接任联合国安理会2013年11月浙江今日起实时发布县级市AQI指数 北京着手“一日游”综合整治方案 拟建奥巴马叫停国安局对国际货币基金组织与广西岑溪炮竹厂爆炸致7死19伤 事故卫计委:加强医院内部治安管理 保障诊外交部:“东伊运”是中国最直接最现实韩劳工诉日企再获胜 获赔2.3亿韩元到2017年德国医疗保险账户将亏空1黎巴嫩支持召开叙利亚问题第二次日内瓦黎巴嫩支持召开叙利亚问题第二次日内瓦杭州火车东站地裂女子被卡 建设方称系消防员跑步救援教师家访救人最高检决定立案侦查吕锡文北京房价同比涨幅扩大争养孙子 爷爷奶奶难胜诉“四九”第一天 寒冷围京城中韩合拍片开启4.0时代乞讨人为何宁愿挨冻也不愿救助一个老图书馆人的“阅读疗法”铁路地铁全面备战到底能不能结婚?《熊出没》票房不“熊”标题导航蔡志忠解密《菜根谭》举钱拍微笑照电科院原书记获刑10年 曾揭发他人立车厢小广告她在小豌豆上做出大文章最霸气的中国德比 昆仑决37天山巨炮福州地铁票价听证会要开始啦!车票双面滑雪教练的Jabra Halo Fu
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘