你应该访问 Exercism.io。
所有技能水平的开发者都应该使用Exercism.io。作为一名新手开发者,它是我最喜欢的学习工具之一。虽然我最初是把它当作练习工具来用的,但我很快意识到这是个错误的想法。原因在于,为了完成题目,你必须放慢速度。
我知道这听起来似乎适得其反,但请听我慢慢道来。
Exercism.io是一个专注于问题解决的编程教育网站。学生可以选择 50 种语言的学习课程,包括 JavaScript、C++ 和 TypeScript。
JavaScript 课程包含 101 个练习,其中包括 18 个核心练习。完成每个核心练习后,即可解锁下一个核心练习,以及一些额外的非核心练习题。但 Exercism.io 的独特之处在于其由经验丰富的开发者组成的导师网络。
为了顺利完成核心练习,导师需要审核你的解决方案,评估其效率。因此,关键不仅在于解决每个挑战,更在于以高效的方式完成挑战。
以下是我对“电阻颜色”练习的解答。我将包含我的原始答案、导师的反馈以及随后的重构代码,以展示从资深开发者那里获得反馈的重要性。
提示:
电阻器采用色环编码,每种颜色对应一个数字。电阻器的前两个色环编码方案很简单:每种颜色对应一个数字。助记符将颜色与数字对应起来,当这些数字存储为数组时,它们恰好与数组中的索引相对应。
方案一:
因为这个问题太简单了,我很快就写出了解决方案并提交,结果通过了测试。
//
// This is only a SKELETON file for the 'Resistor Color' exercise. It's been provided as a
// convenience to get you started writing code faster.
//
let colors = ["black","brown","red","orange","yellow","green","blue","violet","grey","white"]
export const colorCode = (string) => {
return colors.indexOf(string)
};
export const COLORS = colors;
来自导师的反馈
- L1 删除无效评论。
- L5 为什么不直接把这个命名为“颜色”就完事了呢?
- L8 是否必须退货?
方案二:
let colors = ["black","brown","red","orange","yellow","green","blue","violet","grey","white"]
export const colorCode = (string) => {
return colors.indexOf(string)
};
export const COLORS= colors;
-
L1——已删除评论
-
L5——尝试重命名颜色变量,但出现以下错误
Support for the experimental syntax 'exportDefaultFrom' isn't currently enabled
-
L8——如果没有 return 关键字,也无法通过测试。我认为 colorCode 必须显式地返回结果。
方案三:
最后我还是解决了export const COLORS。我发现错误出在第一行定义了 COLORS 变量,然后在第七行试图导出它,而不是在声明时就导出。我给我的导师留了一条评论解释这个问题,他后来也解答了我的疑问。
export const COLORS = ["black","brown","red","orange","yellow","green","blue","violet","grey","white"]
export const colorCode = (string) => {
return COLORS.indexOf(string)
};
来自导师的反馈
-
是的,你不能这样做。我认为你试图用这种语法表达“导出这一个值”的意思——但你已经告诉它你也要导出 colorCode 了。
-
如果你只是想导出它们,最简单的方法就是在它们前面加上 export 前缀(正如你已经看到的)。
-
批准方案3。
-
是的,是否可以通过隐式返回来移除返回值
方案三(最终方案):
export const COLORS = ["black","brown","red","orange","yellow","green","blue","violet","grey","white"]
export const colorCode = (string) => COLORS.indexOf(string)
我给导师的最后一封信
- 难以置信,这个方案比我的第一个方案简洁得多。谢谢,你真是个好导师!
我个人非常喜欢Exercism.io。我不仅希望能够编写代码,更希望能够开发出简洁、周全的解决方案来应对各种问题。
但我说所有技能水平的开发者都应该参加 Exercism是有原因的:
这包括初学者,当然也包括专业人士。
在提交第一份 Exercism 解决方案几个月后,我才完成了 5 个核心练习。这部分是因为我的解决方案在获得批准前需要多次修改,但也因为安排导师审核我的解决方案可能需要好几天时间。
112 位 JavaScript 导师需要花费大量时间才能批改 47,413 位学生提交的作业。我一直向所有想学习 JavaScript 的人推荐Exercism.io。虽然它有语言学习路径,但我从导师们看似随机的反馈中学到了很多。
所以,无论你是需要反馈的新手开发者,还是有经验可以提供反馈的开发者,都应该立即前往Exercism.io创建账户。快去行动吧!
另外,我还发现了一个很棒的运动解题博客,可以看看。我更喜欢先自己解决问题,但如果遇到难题,我也不介意看看别人的博客!
文章来源:https://dev.to/jasterix/you-should-be-on-exercism-io-1d61