Soft_Job 板


LINE

# 刷 LeetCode 练习命名 过去几个月,《程式英文》把焦点放在「分享知识」;例如,变数名称样板、单字 使用情景、等等。对学习者来可说是「输入」的动作。 这次试个不同的方向,做了个实验,把焦点换到「演练技巧」,希望能帮助学习者 改善输入与输出的平衡。 * Google 文件 https://bit.ly/2GIyLtk * GitHub 讨论区 https://bit.ly/321ResR # 先说结论 * 实验内容:用 C# 刷 20 题「解题率最高、 Easy 等级」的 LeetCode * 题目列表: https://github.com/EngTW/English-for-Programmers/issues/69 * 所有 20 题 LeetCode 英文题目(含提示)总共约 2841 字。 * 其中 2434 字 (86%) 包含在「高中英文 7000 字」内。 * 可还原成约 394 个单字原型;例如, am, are, is 的单字原型为 be 。 * 其中 285 个单字原型 (72%) 包含在「高中英文 7000 字」内。 * 所有 20 题 LeetCode 解答内「自订变数」用了约 119 英文字。 * 其中 105 字 (88%) 包含在「高中英文 7000 字」内。 * 可还原成约 44 个单字原型。 * 其中 36 个单字原型 (81%) 包含在「高中英文 7000 字」内。 以下是一些观察与心得。 # 堆叠( stack )字 在英文语法中,可以把多个字「堆叠( stack )」起来来表达意思,例如,程式 设计师熟知的 API: Application Programming Interface 。 这样的语法也可以应用在命名变数上,但要小心拿捏资讯量与复杂度的平衡;例如: * 在有 1 个字的时候,例如, Name, 只有 1 种读法,没有问题。 * 在有 2 个字的时候,例如, ManagerName, 仍只有 1 种读法,没有问题。 * 在有 3 个字的时候,例如, StoreManagerName, 就有 2 种可能的读法要去辨别: * StoreManager Name * Store ManagerName * 在有 4 个字的时候,例如, DollarStoreManagerName, 就有 (4-1)! = 6 种可 能的读法要去辨别。 * 在有 5 个字的时候,例如, CentralDollarStoreManagerName, 就有 (5-1)! = 24 种可能的读法要去辨别。 每多一个字的确会加入新的资讯,但也会提高阅读的困难度(复杂度超过工作记忆 区的容量,使得资讯变成了杂讯)。 我个人经验是「用 3 个字以下的变数名称」,如果要用到超过 3 个字,或许可以 想想否是能用其它方法(程式码架构、型别、注解、规格书、等等)来提供读者理 解程式码所需的上下文脉络。 # 是什麽( what )、为什麽( why ) 以下这个案例很有趣: * https://github.com/EngTW/English-for-Programmers/issues/89 * https://leetcode.com/problems/sum-of-all-odd-length-subarrays/ 程式码本身是在实作从题目要求推导出来的解答算式。 在这个案例中,我发现要描述「这个变数『是什麽』」并不难,难的是让读者了解 「为什麽要有这个变数」。 最後我选择用注解的方式提示推导解答算式的方向,读者需要先了解解答算式,程 式码才会比较好懂。 相对之下,其它案例的变数的名称与实际使用情形多半可以说明该变数「是什麽」 及「为什麽」。 # 英文语法资料 ## 位数 案例: https://github.com/EngTW/English-for-Programmers/issues/79 * 个位: ones place 或 units place * 个位数: ones digit 或 units digit * 十位: tens place * 十位数: tens digit * 十分位: tenths place * 十分位数: tenths digit 参考资料 * https://en.wikipedia.org/wiki/Numerical_digit#Computation_of_place_values ## 上限、下限、包含、不含 案例: https://github.com/EngTW/English-for-Programmers/issues/88 * 上限: upper bound 或 majorant * 下限: lower bound 或 minorant * 包含: inclusive * 不含: exclusive * 参考资料 * https://en.wikipedia.org/wiki/Upper_and_lower_bounds * https://www.lexico.com/en/definition/inclusive * https://www.lexico.com/en/definition/exclusive # 结语 * 因为是第一次进行这样的实验,所以选了 LeetCode 是 Easy 级解题率最高的 20 题。 * 从简单题目开始,容易掌控问题复杂度,适合新手学习者入门。 * 对进阶学习者来说, LeetCode 的程式架构变化少,学习效果可能有限。 * 题目定义明确,有共通的讨论基础。 * 就现今软体业求职面试文化来看,学习者投入「刷 LeetCode 」的成本容易回收。 * LeetCode 题目是以英文写成,也是练习英文的机会。 * 解答的首项要求是正确,再来是可读性,最後是效能(时间、空间)、程式码语 法的精练度。 读者如果有兴趣的话,可以 code review 一下这里列出来的 20 题 LeetCode 解 答,尤其是其「命名可读性」;或着,对 LeetCode 题目或解答中的任何英文用字 、语文解读有疑问的,也欢迎提出来讨论。 * https://github.com/EngTW/English-for-Programmers/issues/69 在此感谢所有参与讨论的网友 :) --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 136.56.13.184 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1604809565.A.3F9.html
1F:推 ucrxzero: 是说linux跟windows的命名浅规则也不同 这有考虑ㄇ 11/08 15:02
2F:→ ucrxzero: linux:my_name Windows:MyName 11/08 15:02
3F:→ x246libra: 微软有这个浅规则?那为什麽os大小写没区分,用git还 11/08 15:27
4F:→ x246libra: 需要另外设定 11/08 15:27
5F:推 ucrxzero: while Microsoft have always used capital letters for 11/08 15:47
6F:→ ucrxzero: the functions and classes 11/08 15:47
7F:→ ucrxzero: 我本身没再写Windows但Linux平田丰的书前面讲规则有提到 11/08 15:49
8F:→ ucrxzero: 一些命名差别,只是想问楼主的讨论有没有包括这部分 11/08 15:49
9F:→ ucrxzero: 我也没用小乌龟还是git bash都用linux command下的所以 11/08 15:50
10F:→ ucrxzero: 你说的我也听不懂 11/08 15:50
11F:推 wulouise: 档案命名规则跟实作不一样很正常吧 11/08 17:54
12F:推 wulouise: c#通常是camelCase, linux比较习惯 snake_case 11/08 17:58
13F:推 Bencrie: 潜规则 11/08 20:30
14F:推 CoNsTaR: 这篇重点完全不在名称格式的 convention 上吧... 11/08 21:02
15F:推 ucrxzero: 问问而已 11/08 21:15
我目前的研究方向倾向「命名的语意」 :) 例如,假设这里有个变数是用来表达「上限值,而且包含该上限值」,那麽,要怎 麽命名这个变数?我会用 "inclusive upper bound" 这三个字。 确定了 "inclusive upper bound" 这三个字後,再来是「命名的语法」;这里就 类似 ucrxzero 提到的「各社群、生态圈、专案会有它的潜规则」, * 在 C# 专案里会写成 inclusiveUpperBound * 在 Python 专案里会写成 inclusive_upper_bound 我个人的感觉是「命名的语法」比「命名的语意」容易掌握,因为「命名的语法」 的规则相对的单纯。 「命名的语意」倚重「对美式英语的语感」,是母语为中文的我们相对不熟的部分 ,是故,我整理这类资料的方向倾向「命名的语意」,觉得那比较能帮到学习者 :) ※ 编辑: AmosYang (136.56.13.184 美国), 11/09/2020 06:09:50 公告一下 :) https://github.com/EngTW/English-for-Programmers/issues/91 # 启用「释出(Release)」功能以减少通知信 以後主要的内容更新会以「释出(Release)」的方式通知,例如: * https://github.com/EngTW/English-for-Programmers/releases/tag/2020-11-07 这样子使用者可以选择 "Releases only" 的追踪(watch)选项,减少通知信。 --- 很抱歉给有追踪 EngTW/English-for-Programmers 的各位带来了困扰 orz ※ 编辑: AmosYang (136.56.13.184 美国), 11/09/2020 06:44:47
16F:推 x246libra: 推 11/09 07:29
17F:推 kangan987: 推 11/09 07:53
18F:推 Ouranos: 必推,谢谢分享! 11/09 11:53
19F:推 jasonwung: 推 11/09 13:27
20F:推 y956403: 推 11/09 13:47
21F:推 mirror0227: 推 11/09 14:08
谢谢各位的欣赏 :) ※ 编辑: AmosYang (136.56.13.184 美国), 11/10/2020 04:13:28
22F:推 rei0: 推 11/10 13:00
23F:推 alimamado: 推 11/11 14:07
24F:推 Lhmstu: 推推 11/12 16:11
谢谢 :) ※ 编辑: AmosYang (136.56.13.184 美国), 11/17/2020 07:58:59
25F:推 showgunLa: 推推 11/21 08:56
26F:推 billy8407: 推,命名很重要 11/21 17:09
27F:推 iwillbehere: 推 12/01 17:13







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP