Soft_Job 板


LINE

自上周发布「如何命名『检查』功能」後,收到许多回馈和讨论,特别是 Verify, Validate 之间的比较。 这周将深入比较 verify / verification vs. validate / validation 的案例;附 带讨论 argument vs. parameter 的差别。 * Google 简报 https://bit.ly/3l161ey * GitHub 讨论 https://bit.ly/321ResR * 如何命名『检查』功能1 * Google 简报 https://bit.ly/31UiEPK * PTT 文章 https://bit.ly/3ixdi3M --- # 「验证」: Validate vs. Verify 案例比较 validate 与 verify 的语意非常接近,在非正式的情景多半可以互换使用。 这里,我们将检视以下案例来试着监别 validate 与 verify 在语意上细微的差异: * IEEE 1012: Verification and Validation * IEEE 标准 1012 对 verification 及 validation 的定义 * validation, verification 在各种情景下的语意、出现频率 感谢参与 https://github.com/EngTW/English-for-Programmers/issues/45 讨论 的网友。 --- # IEEE 1012: Verification and Validation ## Verification 「开发过程可分成多个阶段; 每个阶段收尾时,验证『成品是否满足此阶段的目标?』」 也就是验证「有没有把东西做对?」,而「对」的定义由该开发阶段的「输入」来 判断。 例如说: * 需求R:「做出整数加法器」 * 设计阶段:输入需求R,输出规格书S * 规格书S会定义整数输入格式、加法的演算法、如何处理溢位、等等 * 就「设计阶段」而言, verification 会验证「规格书S是否能满足需求R?」 * 实作阶段:输入规格书S,输出程式P * 程式P会定义程式码的细节、执行加法、处理例外情形、等等 * 就「实作阶段」而言, verification 会验证「程式P是否能满足规格书S?」 ## Validation 「开发过程可分成多个阶段; 每个阶段收尾时,验证『成品是否满足此阶段的目的?』」 也就是验证「有没有做对的东西?」,而「对」的定义由更高层次的整体「目的」 来判断。 例如说: * 需求R:「做出整数加法器」 * validation 验证内容包括「整体来看,整数加法器真的是最适当的解决方案吗?」 * 设计阶段:输入R,输出规格书S * validation 验证内容包括「规格书S开出来的执行条件、技术限制合理吗?」 * 实作阶段:输入S,输出程式P * validation 验证内容包括「程式P的使用体验如何?是否真正解决了使用者的 问题?」 ## 参考资料 * https://en.wikipedia.org/wiki/Verification_and_validation * https://en.wikipedia.org/wiki/Software_verification_and_validation --- # 「验证」: Validate vs. Verify 语意 / 出现频率 我们挑选了以下字样来比较 validation, verification 在各种情景下的语意、出 现频率。 这些字样包括程式设计相关字(例如: code, HTML, password ),也有些日常用 语的字汇(例如: age, identity, signature )。 * age 年龄 * code 程式码 * data 资料 * email 电子邮件 * file 档案 * form 表格 * HTML 超文本标记语言 * identity 身分 * password 密码 * signature 签名 * user 使用者 ## 采样方式 * 把以上字样以 "XXX validation" / "XXX verification" 的形式喂给 Google * 记录 Google 传回的搜寻结果数量 * 归纳 Google 搜寻结果前 3 页中,该词的使用情景 --- # 验证 年龄 (age) ## Validate / Validation Google 搜寻结果数量: 89k * 验证「生物年龄监定方法」的准确度 * (极少案例)验证输入字串是否为合理的年龄数值 * (极少案例)验证是否合乎组织、法律规定 ## Verify / Verification Google 搜寻结果数量: 16600k * 验证年龄是否合乎组织、法律规定 --- # 验证 程式码 (code) ## Validate / Validation Google 搜寻结果数量: 595k * 验证程式码、资料是否符合资料格式、语言规格 * JSON, XML, HTML * 邮递区号、信用卡号码 ## Verify / Verification Google 搜寻结果数量: 524k * 验证程式码实作方法、行为、执行结果是否符合功能规格书 --- # 验证 资料 (data) ## Validate / Validation Google 搜寻结果数量: 4430k * 验证资料的品质 * 正确性、准确性、一致性、安全性、隐私性、等等 * 格式是否「乾净」、适合机器处理 ## Verify / Verification Google 搜寻结果数量: 1390k * 验证资料迁移 (migration) 後的正确性 ## 参考资料 * https://en.wikipedia.org/wiki/Data_validation * https://en.wikipedia.org/wiki/Data_verification --- # 验证 email ## Validate / Validation Google 搜寻结果数量: 928k * 验证 email 地址的格式 * 验证 email 是否有效(参考 verification ) ## Verify / Verification Google 搜寻结果数量: 11200k * 验证 email 是否能确实投递 * 是否会被各家 ISP 的垃圾信过滤机制拦截 * 网域名称过滤机制、等等 --- # 验证 档案 (file) ## Validate / Validation Google 搜寻结果数量: 324k * 验证档案格式是否符合规格 * PDF, CSV, HTML, JSON, XML, 等等 ## Verify / Verification Google 搜寻结果数量: 152k * 验证档案内容是否一致 * 验证档案内容是否完整 (checksum) * 验证档案来源真伪(数位签证) ## 参考资料 * https://en.wikipedia.org/wiki/File_verification --- # 验证 表格 (form) ## Validate / Validation Google 搜寻结果数量: 2250k * 验证表格资料是否符合规格、是否满足商业需求 * 必要资讯 * 日期格式 * 信用卡号码格式 * 电话号码格式 * … ## Verify / Verification Google 搜寻结果数量: 54.2k * 与 validate / validation 相似 --- # 验证 HTML ## Validate / Validation Google 搜寻结果数量: 947k * 验证 HTML 资料是否符合规格 ## Verify / Verification Google 搜寻结果数量: 15k * 以上传含有特定内容的 HTML 档案来验证网站所有权 --- # 验证 身分 (identity) ## Validate / Validation Google 搜寻结果数量: 93k * 验证身分资料是否符合规格 * 住址;是否真的有这个地址 * 电话;是否真的有这支电话 * … * 验证身分资料是否真实(参考 verification ) ## Verify / Verification Google 搜寻结果数量: 4510k * 验证身分资料是否真实、是否真的能连结到一特定、真实存在的人身上 --- # 验证 密码 (password) ## Validate / Validation Google 搜寻结果数量: 423k * 验证密码是否符合规格 * 英文大小写、数字、符号…… * 验证密码是否正确(参考 verification ) ## Verify / Verification Google 搜寻结果数量: 226k * 验证密码是否正确 --- # 验证 签名 (signature) ## Validate / Validation Google 搜寻结果数量: 144k * 说明「由签名赋与文件法律上的效力」这件事 * 验证签名格式、流程、形式是否正确 * 能否满足「由签名赋与文件法律上的效力」的条件 * 例如,签名时有没有见证人 ## Verify / Verification Google 搜寻结果数量: 2820k * 验证签名真伪 * 是否真的是当事人的手迹 --- # 验证 使用者 (user) ## Validate / Validation Google 搜寻结果数量: 242k * 跟使用者验证产品功能性、可用性 ## Verify / Verification Google 搜寻结果数量: 1610k * 验证使用者(帐号)状态 * 是否为真人 * 使用者帐号帐号信用是否良好 --- # 「验证」: Validate vs. Verify 该用哪个? 这两个字的语意有重叠,在口语上也常交换着用;如果实在不确定,通常可以退一 步用 "check" ,表达「检查」的意图。 ## Validate 「资料本身是否『有效 (valid) 』」? * 资料是否符合形式规格 / 是否在合理范围内,例如: * 视地区、文化而定,日期有一定的表示格式 * 年龄不可是负数 * 电子邮件地址必须是 [email protected] 的格式 * 资料是否完整、准确 / 是否与现实一致,例如: * 地址是否完整 * 生日日期是否真的存在 * 例如, 2019-02-29 这个日期的格式正确,但事实上不存在 * (在程式设计以外的情景)过程是否合乎规定程序 / 是否符合整体目的,例如: * 一份法律文件要有效,除了当事人亲笔签名,可能还需要见证或公证 * "user validation": 产品的设计是否能确实解决使用者的问题 ## Validate / Verify 「资料、系统是否符合『预期的正确条件、状态』?」 * 年龄是否符合组织、法律规定 * 「起始日」是否在「终止日」之前 * 生日日期是否有正式文件背书 * 法律文件上的签名笔迹是否为真 * 是否为见证人 / 公证人认同 --- # 引数 Argument 参数 Parameter 的差别 从 Google 可以找到前人留下的答案: * 方法、函数宣告的 是 参数 (parameter) * 传入方法、函数的 是 引数 (argument) 例如: ``` function foo(parameter) { … } foo(argument) ``` 一篇 "Kt. Academy" 的文章也点出,可以把相似的概念应用在类别(type)上,例如: ``` class Bar<TypeParameter> … val baz: Bar<TypeArgument> … ``` 那麽,为什麽参数是参数、引数是引数? 我们可以从语源学找到线索: * argument 是从 1300 年代的「根据、证据;推论」而来,带有「『可从其推导出 别的观念』的观念」的意思。 * parameter 在 1920 - 1950 年代逐渐开始含有「帮助定义系统特性的可测量因素」 的意思。 一篇 MDSN 文章提供了很有趣的理解方式: > You can think of the parameter as a parking space and the argument as > an automobile. Just as different automobiles can park in a parking > space at different times, the calling code can pass a different > argument to the same parameter every time that it calls the procedure. 「你可以把参数(parameter)想成停车位(parking space),把引数(argument)想成 汽车(automobile)。就像不同的汽车在不同的时间可样停在同一个停车位上,程式 码每次呼叫函式的时候,可以传送给函式参数不同的引数。」 ## 参考资料 * https://softwareengineering.stackexchange.com/questions/186293/why-are-actual-parameters-called-arguments * https://blog.kotlin-academy.com/programmer-dictionary-parameter-vs-argument-type-parameter-vs-type-argument-b965d2cc6929 * https://www.etymonline.com/word/parameter * https://www.etymonline.com/word/argument * https://stackoverflow.com/questions/1788923/parameter-vs-argument/1788926#comment43458658_1788923 * https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/procedures/differences-between-parameters-and-arguments 感谢在 https://github.com/EngTW/English-for-Programmers/issues/31 参与讨 论的网友。 --- # 结语 如果有软体工程、程式设计相关的英文问题,欢迎推文提问,或着到《程式英文》 GitHub 讨论区留言。 * https://bit.ly/321ResR * https://github.com/EngTW/English-for-Programmers/issues 大家集思广益、切磋砥砺,增强英文语感,提昇程式可读性。 :) --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 136.56.13.184 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1597982849.A.9A7.html
1F:推 sniper2824: 先推 08/21 12:16
2F:推 jobintan: nice. 08/21 12:20
3F:推 jerryshadow: 先推 08/21 12:27
4F:推 javy0521: 推 08/21 12:50
5F:推 hans1461: 推 08/21 13:26
6F:推 summerleaves: 推 08/21 14:36
7F:推 BlazarArc: 推 08/21 15:18
8F:推 TWkobe: 谢谢 很实用 08/21 15:53
9F:推 minesos520: push 08/21 16:30
谢谢 :)
10F:推 ayugioh2003: 推 参数引数那段好懂又好记 08/21 21:45
谢谢你的欣赏 :)
11F:推 Ouranos: 推推! 08/21 22:19
12F:推 LIN810116: 推 08/22 04:37
13F:推 sksksk0487: 推 08/22 13:38
谢谢 :)
14F:推 Csongs: 所以verify包含validation 08/22 13:54
我是这样看,先重新检视字典的定义: --- ## validate > check or prove the validity or accuracy of (something). 检查、证明某事物的 有效性 或 准确性 > demonstrate or support the truth or value of. 展示、支持某人事物的确实性、 (精神上的) 价值 > make or declare legally valid. 宣告、认可某事物 在法律上的有效性 > recognize or affirm the validity or worth of (a person or their > feelings or opinions); cause (a person) to feel valued or worthwhile. 认可、确性某人 (或它的感受、意见) 的 有效性、 (精神上的) 价值 ## verify > make sure or demonstrate that (something) is true, accurate, or justified. 确认、展示某事物为真、准确、合理 > LAW > swear to or support (a statement) by affidavit. 法律上,以宣誓为某主张背书 --- 把这两个字最主要的解释并排在一起看,可以看出为什麽那麽难分辨 * validate * 检查、证明某事物的 有效性(validity) 或 准确性 * validity * > the quality of being logically or factually sound; soundness or > cogency. * 逻辑上、事实上 合理明确一致 ,让人信服 * > the state of being legally or officially binding or acceptable. * 在法律上 或 正式地 有效/被接受 * verify * 确认、展示某事物为真、准确、合理 也就是说,随着上下文脉络对「有效性、准确性、真实性、合理性」的解读的改变 ,在 口语 上,这两个字多半可以互换着用。 (有点事,先离开,等等再回来写完) ※ 编辑: AmosYang (136.56.13.184 美国), 08/22/2020 21:27:14 ※ 编辑: AmosYang (136.56.13.184 美国), 08/22/2020 21:58:41 回到原题 > 所以verify包含validation 与其说「包含」,我会这样想: * 如果你选择把「此资料是否有效」与「此资料是否满足预期的正确状态」分开来 看,那麽, * `bool ValidateAge(string age)` 可以做「判断 age 资料是否有效」;例如 , "-3", "foobar" 会是「无效的年龄资料」。 * `bool VerifyAge(int age)` 可以做「判断是否符合『对年龄的规定』」;例如 12 (岁) 就不符合「成人 18 岁的规定」。 * 相对的,如果在你的逻辑模型中你认为「『大於 18 的数字』才是 有效(valid)的 + 正确的 + 合理的」,也是可以用一个 `ValidateAge()` 或 `VerifyAge()` 就一次检查完。 或着,写成 `CheckAge()` 也可以,大多数人应该还是能知道你的意图是「检查 age 是否符合你的逻辑模型的要求。 ※ 编辑: AmosYang (136.56.13.184 美国), 08/23/2020 13:54:00
15F:推 Csongs: 年龄举例 蛮清楚的 谢谢 08/24 09:41
不客气 :) ※ 编辑: AmosYang (136.56.13.184 美国), 08/29/2020 06:30:00







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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP