范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

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

    瞰奥人物射击天才少年终摘银牌杨皓然名字没白改在2016年里约奥运会资格赛止步铩羽而归后,曾经在中国射击队被看作是天才少年的杨浩然,改了名字,他将名字中间的浩改为了皓。杨皓然说,他希望自己像是白纸一样,重新来过。过去的五年,让个人痛苦的根源被找到,奋斗与修行都无济于事王建平每日一文感知论第七部(125)人生后台上演的悲剧催人泪下的人间悲剧都是在台上演出的,但最悲的剧情却从不启幕上演,它只在后台进行,这就是人人都在经历的个人悲剧。更悲情的是,我们收藏很久的朋友圈短句文案1。hr。祝我们都有数不尽的鲜花和浪漫。2。hr,。没有人喜欢孤独,只是不愿失望。3。hr人生为什么要多去折腾很多人不太喜欢折腾,是因为什么呢?因为折腾会让人失去很多,让人没有安全感。但是人生的能力绝大部分都是折腾来的。因为实践才是检验真理的唯一标准。前两年看到我周围的朋友都有负债压力蛮大天冷了该发的文案1。搓搓手,又是一个人的冬天。2。脱单了,脱单了,我终于脱单了,我现在开始穿两件了。3。冬天了小熊软糖要穿棉衣,变成棉花糖了。4。天冷了,我就变成仙女了,因为我可以哈出仙气了。5。九句真言,人生很短,珍惜当下人生犹如逆水行舟,不进则退。第一句,人都是逼出来的。每个人都是有潜能的,生于安乐,死于忧患,所以,面对压力的时候,不要焦躁,也许这就是生活对你的一点小考验,相信自己,一切都能处理好同治帝为何19岁就离世?看看他怎么作得,就知到19岁已是高寿立志言为本,修身行乃先唐吴叔达前言在我国古代,人的寿命都是很低的,因为古代经常发生战乱,所以伤亡是难免的,而且医学水平也不高,普通老百姓还看不起病,经常会因为一个不严重的病就死亡,为什么归化球员比本土球员更卖力?图片摘自网络,如有侵权,请联系删除归化球员为什么愿意入籍中国?很简单,为了赚钱!但是,除了赚钱之外,他们还有什么心愿?踢世界杯!毕竟,足球是世界第一运动,有着数十亿的球迷,而世界杯从场均4。7分到17。5分,离开詹姆斯才3年,就成联盟第一替补莫欺少年穷,3年前被骂惨的水货,如今成联盟第一替补。时间拉回到2018年,此时的詹姆斯,还是阿克伦之子,克利夫兰的英雄,尽管勇士依旧如日中天,但经过一个休赛期的调整,骑士的阵容看上李春江再遇难题!顶级3D球员两场0分,水土不服还是实力不足上海队在季前赛以739惨败给了辽宁队,遭遇两连败,这还不是最坏的消息,上海队重金引进的国手可兰白克的表现才是让李春江教练和上海队更为头疼的问题。在过去的两次比赛中,可兰白克完全迷失就在今天!5队7交易完成,罗斯144替补出炉,东契奇迎来强援距离202122赛季NBA常规赛开启仅剩3天时间,参赛各队都在紧锣密鼓备战着,争取帮助球队取得新赛季的开门红,以在新赛季走得更远,届时将吸引数以万计球迷的瞩目。与此同时,自由球员市
    冬季总被忽略的时尚单品,LVSKI系列帮你备上啦冬季可能是潮人们最头痛的季节,想要保持时髦感又要抵御严寒,每当为此纠结不已而痛苦时,一些配饰则能化腐朽为神奇,让我们在冬日也能继续弄潮儿。LVSKI系列中的几款围巾,兼具时尚感与功内心存戾气,何来静行医南京莽医生父亲教育失败的典范幼儿园小朋友之间的小碰撞在正常不过了,小朋友小,对某些事情无法做出合适的判断和行为,这些是需要家长和老师日常共同教育和沟通的而这位鲁爸爸看到自己儿子受委屈,不分青红皂白瞬间变成莽爸幼儿园丛林法则,孩子为啥总在欺负小朋友和被小朋友欺负路上南京医生鲁某掌掴幼儿打伤老人被拘,从监控视频看打人事实清楚,尤其是忽在孩子脸上那一巴掌让身为人父人母的家长无不痛彻心扉怒不可遏,结果大家都知道了,鲁某被刑拘,被打小孩母亲称绝不接受幼童之间玩耍受伤,男子的行为致自己背上牢狱之灾,儿子无缘编制11月8日,江苏南京,身为医院工作人员的鲁某某,因其儿子在幼儿园与同班男童在争抢玩具时,被对方戳破头皮,于是到对方家中讨要说法。期间,鲁某某在怒斥打自己儿子的男童几句之后,突然暴起普通的小孩打闹升级到南京医生打人事件是否后悔一时的冲动?南京骨科鲁姓医生打人啦!而且打人的对象不止是小孩,而是把一个60多岁的老人,硬生生地推倒在地,造成了严重的骨折恶性事件。如果看到视频的朋友,隔着屏幕都会感觉到愤愤不平,因为,一个正泊心云舍明经园泊心云舍致力于在古城古镇古村落打造一城一院一家一卧,泊心云舍明经园的选址经反复考察调研,由创始人祥子先生带领泊心团队经过前后三年的匠心打造,最终呈现在泊心家人面前。泊心云舍明经园地被列入世界遗产名录的中国古典园林究竟有多美?今天来打卡一波被列入世界遗产名录的中国古典园林究竟有多美?1997年拙政园留园网师园等中国古典园林被列入世界遗产名录,成为了中式美学的代表!这些古典园林大多都属于江南园林,它们是古代文人或退隐官世界上最冷的首都蒙古乌兰巴托小时候,当我看着中国地图时,总会对蒙古这个国家感到好奇,为什么我国这么多城镇,而蒙古这么大一片地方,却没几个城镇?同时引起我好奇的,是位于蒙古国土中央的乌兰巴托,因为这是唯一一个用要数钱,也要数星星数字游民10月总结离开大理回海南10月份的大理渐生凉意。有了大日头皆大欢喜,而太阳公公一躲起来,就得把外套拽紧。经常和朋友户外办公,蹦迪,去海边散步,做了三次私厨,大家都觉得糟粕醋的味道惊为天人。没有夸张,就是真8D魔幻的重庆又火了!8天吃掉1000万桌火锅,每天400万人来此打卡关注重庆最近又火了!这次不是因为魔幻,而是因为吃!据统计,8天长假里的重庆火锅门店接待量有1000多万桌。也就是说,来到重庆的游客平均每人都要吃一顿甚至几顿重庆火锅。记者了解到,假在新西兰打猎,步步惊心来源环球时报环球时报驻新西兰特约记者王淼狩猎,是人类最早具备的生存技能之一,曾是人类获取食物的主要途径。在现代社会,对于很多人来说猎人只存在于书本中,但在新西兰使用枪支狩猎的习俗被