游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

分享给前端初学者编写更好代码的3个技巧

  转载说明:原创不易,未经授权,谢绝任何形式的转载
  作为初学者,您可能不会过多考虑代码风格。采用以下三个原则,可以立即提高您的代码质量。
  在过去几个月中,我有机会指导一组才华横溢的新网页开发人员,他们参加了TechLabs的数字塑造者计划。
  看到这个团队从零开始学习到最终发布应用程序的学习过程真是太有趣了。当我审查他们的代码时,它让我想起了自己作为开发者的头几年。特别是当您是自学的,没有任何正式的教育背景,您只会不停地尝试。您无法感知好的或坏的代码实践。您会对任何能够工作的东西感到高兴。
  这让我想到了一个问题:哪些编码原则是我希望早些时候就知道的?这里就是它们!
  您可以立即在编码实践中实施这些简单的提示。虽然简单,但它们对我的代码编写方式产生了很大的影响。
  注意:尽管标题明确指出前端开发人员,但这些原则适用于编程的所有领域。使用提前返回代替嵌套条件语句
  在Web开发中,您会遇到很多需要检查特定条件是否满足的情况。
  举个例子,假设您有一个API路由,用于验证请求并返回一个用户对象:exportconsthandlerasync(req,res){if(req。methodPOSTreq。methodOPTIONS){constemailvalidateEmail(req。body。email);if(email){constusergetUserByEmail(email);if(user){returnres。status(200)。json({user});}else{returnres。status(404)。json({message:Nouserfound});}}else{returnres。status(422)。json({message:Missingemail});}}else{returnres。status(405)。json({message:Unsupportedmessage});}}
  虽然这个函数中没有太多的逻辑封装,但它看起来已经有些杂乱无章了。具体来说,这段代码存在以下两个问题:很难跟踪代码流程。我们需要从左到右而不是从上到下阅读代码(箭头反模式)。很难找到每个if对应的else语句。它们被if语句的大体量隔开了。
  改进这段代码的一个简单技巧是使用提前返回模式(ReturnEarlyPattern)。提前返回模式会在不满足条件时终止函数的执行,以便函数的期望结果始终出现在最后。如果我们重新编写上面的API路由,它将如下所示:exportconsthandlerasync(req,res){if(req。method!POST!req。method!OPTIONS){returnres。status(405)。json({message:Unsupportedmessage});}constemailvalidateEmail(req。body。email);if(!email){returnres。status(422)。json({message:Missingemail});}constusergetUserByEmail(email);if(!user){returnres。status(404)。json({message:Nouserfound});}returnres。status(200)。json({user});}
  使用提前返回模式后,我们可以轻松地从上到下跟踪代码执行。由于我们假设一切顺利,只检查缺失的值,因此避免了嵌套太多条件。
  最后,我们可以一眼看到函数的期望结果,它位于最底部。2、为人类编写代码
  归纳前一个提示的内容,我们得到了第二个原则:编写易于他人阅读而非机器的代码。
  这听起来很平凡,但起初却让我彻底改变了思维方式。当我开始编程时,我总是把它看作是与计算机交流的一种方式。我们告诉计算机要做什么。但我们编写的代码是由同事阅读和理解的,而不是机器。
  我们的同事是需要阅读和理解代码的人。最终,计算机将一切都转换为0和1,并不关心可读性。让我们以groupBy函数为例:constgroupBy(arr,groupFn)arr。reduce((grouped,obj)({。。。grouped,〔groupFn(obj)〕:〔。。。(grouped〔groupFn(obj)〕〔〕),obj〕,}),{});
  我们清楚地展示了如何编写复杂的单行函数来执行简单的操作:对数组进行分组。
  尽管这可能让您感觉更加专业,但对于任何需要审查代码的人来说,这确实会使事情更加难以理解。相比之下,考虑以下实现方式:constgroupBy(arr,groupFn){constgrouped{};for(constobjofarr){constgroupNamegroupFn(obj);if(!grouped〔groupName〕){grouped〔groupName〕〔〕;}grouped〔groupName〕。push(obj);}returngrouped;};
  我们可以从上到下阅读这段代码,并立即了解每行代码的作用。
  尽管这可能看起来没有之前的实现方式那么酷炫,但是以后所有需要重新审查这段代码的人都会因为这种易于阅读的实现方式而感谢您。将信息隐藏在函数背后
  作为初级开发人员,改进代码风格的最后一个想法是将不相关的信息隐藏在函数背后。这也有助于提高代码的可读性。
  如果您熟悉React,Hooks是这一原则的一个很好的例子:importReact,{useState,useEffect}fromreact;functionFriendListItem(props){const〔isOnline,setIsOnline〕useState(null);useEffect((){functionhandleStatusChange(status){setIsOnline(status。isOnline);}ChatAPI。subscribeToFriendStatus(props。friend。id,handleStatusChange);return(){ChatAPI。unsubscribeFromFriendStatus(props。friend。id,handleStatusChange);};});return(listyle{{color:isOnline?green:black}}{props。friend。name}li);}
  在这里,我们有一个组件,它输出一个带有动态状态颜色的列表项。虽然这段代码可以正常运行,但它封装了与FriendListItem组件的目的不直接相关的逻辑。
  如果我们提取该逻辑并创建一个名为useFriendStatus的自定义Hook,我们可以简化该组件,如下所示:importReact,{useState,useEffect}fromreact;functionFriendListItem(props){constisOnlineuseFriendStatus(props。friend。id);return(listyle{{color:isOnline?green:black}}{props。friend。name}li);}
  这样做有两个好处:我们可以重用useFriendStatus的逻辑。我们将组件简化为其功能的实质内容。
  更一般地说,隐藏信息的原则是将不相关的信息封装在抽象函数背后。
  因此,我们不需要关心抽象函数内部发生了什么(实现细节)我们可以更专注于它的目的,即函数的名称(问题域的级别)。总结
  我希望这些小技巧对您有所帮助!本质上,编写更好的代码通常只是让它更易于阅读和理解,无论是对于您自己还是对于其他人来说。原文:https:konstantinmuenster。medium。com3tipstowritebettercodeasabeginnerfrontenddeveloperea0fe9b3492c
  作者:KonstantinMnster
  非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正

RedmiK30Pro新配色水色天光来了!明日上午10点首卖感谢IT之家网友Chaozhisoft的线索投递!IT之家7月26日消息Redmi手机今日推出RedmiK30Pro全新配色水色天光,现已在小米商城接受预约并将于明日上午……即日起,凭准考证购买RedmiK30Pro变焦版可额外立减2IT之家7月10日消息今日Redmi手机宣布,即日起凭准考证至任意小米之家门店购买RedmiK30Pro变焦版,可额外享200元立减优惠。同时,准备购买K30Pro变焦版……三星年底推5G集成芯片GalaxyS11首发据韩联社报道,三星准备好在今年年底推出一款结合了调制解调器和应用处理器(AP)的5G芯片组,可能会用于其2020年发布的GalaxyS11系列智能手机。一位三星发言人告诉……三星手机618促销开启S10系列12期免息,S8仅2399元IT之家6月17日消息明天就是618购物节了,三星也开启了年中促销活动,三星S10系列支持12期免息,如果依然觉得价格偏高的话,还有2399元的S8和3299元的S9(128G……iQOONeo5邀请函现抵达IT之家双芯相遇,3月16日登场IT之家3月15日消息iQOO官方此前宣布将于3月16日正式发布iQOONeo5新款手机。这场发布会的邀请函现已抵达IT之家,大家现在不妨一起来看一下吧。说出来你们可能不……轻薄机身1000Hz瞬时触控采样iQOONeo5产品外观正式IT之家3月12日消息今日iQOO手机官方微博正式官宣iQOONeo5手机。官方表示搭载骁龙870的这款机型在视、听、触全方位优化,带来超感游戏体验。夜影黑配色的新机官方图曝光……生活很累,但我还要继续生活的滋味,很苦很涩,为人的我们,很累很难。那又如何?自己选择的路,跪着咱也走完,自己决定的事,爬着咱也向前!怕什么?人生风风雨雨之后,肯定是耀眼蓝天!随着年龄的增长,自……iQOOZ3通过3C认证55W电荷泵快充感谢IT之家网友肖战割割的线索投递!IT之家3月2日消息vivo近日有多款新机通过国家3C质量检测,数码博主数码闲聊站透露,最新的一款V2073A即为将要发布的iQOOZ……X型身材的女人该如何展现自身的优势呢?X体型,俗称沙漏型,属于匀称的体型,我们称之为葫芦形身材。是当今社主流审美观的体型,也是我们穿衣搭配打造的方向。沙漏型身材是五种典型身材中接近完美身材的一种。这种身材的主……iQOONeo5将于3月16日正式发布搭载骁龙870,66WIT之家2月25日消息iQOO今日官宣,将于3月16日正式发布iQOONeo5新款手机。这款产品此前在微博得到曝光,并且已经入网,部分配置信息得到曝光。海报中出现全芯登场字样,……iQOONeo5入网搭载骁龙870,66W快充感谢IT之家网友肖战割割的线索投递!根据微博博主数码闲聊站爆料,vivo即将推出的新款中端机iQOONeo5已经入网,产品代号为V2055A,将支持5G信号,配备大功率充……卫正英国研制出一种使用高频压力传感器的新型智能口罩英国格拉斯哥大学的研究人员研制出一种基于高频压力传感器的智能口罩,可对呼吸、咳嗽和语音进行长期监测和识别。人体呼吸活动是一种重要的生理数据。为更好监测该数据,研究人员利用……
图赫尔执教拜仁没任何犹豫,在国外久了更知道拜仁的价值此前,德甲俱乐部拜仁慕尼黑官方宣布,前切尔西主帅图赫尔将正式担任俱乐部主帅的位置。而在完成签约以后,图赫尔也接受了俱乐部官网的采访谈到了自己执教拜仁的看法。关于拜仁的地位……爆料三星GalaxyNote20将使用4500mAh电池IT之家5月19日消息据MSPoweruser报道,有关三星GalaxyNote20系列手机的爆料逐渐增多,近日关于GalaxyNote20的电池信息也已被曝光。据Gal……三星GalaxyNote20系列配置曝光挖孔屏,全新屏下指纹IT之家5月14日消息近日DisplayChainConsultants公司的CEORossYoung一直在推特上曝料关于三星GalaxyNote20系列手机的消息,IT之家了……男篮公布大名单,徐杰顶替郭艾伦出战,对手是三分大队中国男篮大战巴林在即,这次的名单和对阵哈萨克斯坦差不多,只有一个人员变化,后卫线上的郭艾伦因为大腿伤病被徐杰顶替。郭艾伦跟对方核心对位郭艾伦在对阵哈萨克斯坦的时候出……印度智能手表全球份额暴增347,超越中国成为第二大市场IT之家8月28日消息,根据CounterpointResearch最近发布的GlobalSmartwatchModelTracker,由于通货膨胀和地缘政治冲突等宏观不确定性……三星GalaxyNote20不会延期,但会考虑线上发布IT之家4月9日消息据Softpedia援引《韩国先驱报》报道称,三星已经开始为GalaxyNote20的发布做必要的准备,尽管目前三星尚未确认此次发布会的形式。考虑到目……新机皇预定?三星GalaxyNote20曝光代号CanvasIT之家3月5日消息三星早前正式发布新款GalaxyS20系列手机,而近日也有博主曝光了新款三星GalaxyNote20的代号。据博主RolandQuandt爆料,三星G……汝窑白64GB版上架,魅族16X手机全颜色1798元IT之家12月25日消息今日汝窑白(6GB64GB)版本的16X终于上架,颜值真真是极好的,有需求的小伙伴要抓紧下手。京东魅族16X6GB64GB汝窑白1798元直达链接……国庆首日,东台两登央视盛世华诞,家国同庆国庆首日全市文旅活动缤纷登场东台两登央视央视《第一时间》聚焦条子泥呈现了一幅万物和谐的美丽生态画卷央视财经《最美自驾路》节……你现在能在美团外卖点魅族手机了,还送奶茶IT之家12月24日消息昨日魅族科技在微博上发出了一张宣传图,内容是真快,并暗示这张宣传图中的主角会在12月24日上线。魅族社区网友甚至爆料称,魅族将推出新业务跨界做奶茶。今日……为什么要推行数字人民币?数字人民币的发行,得益于电子移动支付盛行。1)那么,数字人民币与支付宝,微信有什么区别呢?交易方式不同微信、支付宝是一个移动支付工具。在支付时,实质是在……魅族要做奶茶了?黄章不可能,那不是我们热爱的事IT之家12月23日消息魅族社区网友爆料称魅族将推出新业务跨界做奶茶,该消息很快引起了众多网友的们的讨论,甚至有网友开始调侃称打磨一杯口感最好的茶。那么魅族真的要做奶茶了……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网