【软件的一致性】

软件本身固有复杂性、一致性、易改变性、不可见性等特点。

本文作者: 常柱
(有改动)

一致性是降低系统复杂性和使其行为更加明显的强大工具。如果一个系统是一致的,这意味着相似的事情以相似的方式完成,而不同的事情以不同的方式完成。 一致性创造了认知杠杆:一旦你学会了在一个地方如何做某件事,你就可以利用这些知识立即理解其他使用相同方法的地方。如果系统没有以一致的方式实现,开发人员必须分别了解每种情况。这需要更多的时间。
一致性可以减少错误。 如果一个系统是不一致的,两种情况可能看起来是相同的,但实际上它们是不同的。开发人员可能会看到一个看起来很熟悉的模式,并根据之前遇到的模式做出错误的假设。另一方面,如果系统是一致的,基于熟悉的情况做出的假设将是安全的。一致性使开发人员工作更快,错误更少。

更大范围的一致性是构件重用技术。

一致性的例子:

一致性可以应用于系统的多个级别。这里有几个例子:命名: 一致的方式使用名称的好处,如微软推荐的匈牙利命名法。
编码风格: 现在开发组织通常有样式指南,它将程序结构限制在编译器强制执行的规则之外。现代风格指南解决了一系列问题,比如缩进、大括号放置、声明顺序、命名、注释和对被认为是危险的语言特性的限制。样式指南使代码更容易阅读,并可以减少某些类型的错误。
接口: 具有多个实现的接口是一致性的另一个例子。一旦您理解了接口的一个实现,任何其他实现都会变得更容易理解,因为您已经知道它必须提供的特性。
设计模式: 设计模式是某些常见问题的普遍接受的解决方案,例如用户界面设计的模型-视图-控制器方法。如果您可以使用现有的设计模式来解决这个问题,那么实现将会进行得更快,更有可能工作,而且您的代码对读者来说也更容易理解。
不变量: 不变量是变量或结构的一个总是为真的属性。例如,存储文本行的数据结构可能强制一个不变式,即每行以换行字符结束。不变量减少了必须在代码中考虑的特殊情况的数量,使对代码的行为进行推理变得更容易。
数据表达、数据库: 采用前后一致的或标准数据格式。

确保一致性:

一致性很难保持,特别是当许多人长时间从事一个项目时。一组人可能不知道另一组人建立的惯例。新来者不知道这些规则,所以他们无意中违反了这些约定,并创建了与现有约定冲突的新约定。以下是一些建立和保持一致性的建议:
文档: 创建一个文档,列出最重要的总体约定,比如编码风格指南。将文档放置在开发人员可能看到的位置,例如项目 Wiki 上的显眼位置。鼓励新加入团队的人阅读文档,并鼓励现有的人每隔一段时间就阅读一次。各种组织的一些风格指南已经在网上发布;考虑从其中之一开始。
对于更本地化的约定(如不变量),请在代码中找到适当的位置来记录它们。如果你不把这些惯例写下来,其他人就不太可能遵循它们。
强制规约: 即使有很好的文档,开发人员也很难记住所有的约定。执行约定的最佳方法是编写一个检查违规的工具,并确保代码不能提交到存储库,除非它通过了检查器。自动检查器对于低级语法约定特别有效。
我最近的一个项目有行终止字符的问题。一些开发人员在 Unix 上工作,行被换行终止;其他的工作在 Windows 上,行通常由一个 carriage-return 后跟一个换行来结束。如果一个系统上的开发人员对先前在另一个系统上编辑过的文件进行了小的编辑,那么编辑器有时会将所有行终止符替换为适合该系统的行终止符。这给人的感觉是文件的每一行都被修改了,这使得跟踪有意义的更改变得很困难。我们建立了一个约定,即文件应该只包含换行,但是很难确保每个开发人员使用的每个工具都遵循这个约定。每当一个新的开发人员加入这个项目,我们就会经历一连串的线路终止问题,而那个开发人员就会适应这个约定。
我们最终通过编写一个简短的脚本解决了这个问题,这个脚本在将更改提交到源代码存储库之前自动执行。该脚本检查所有已修改的文件,如果其中任何一个包含回车,则将中止提交。该脚本还可以手动运行,以修复损坏的文件,方法是用换行替换载波返回/换行序列。
这立即消除了问题,并帮助培训了新的开发人员。
代码审查为执行约定和对新开发人员进行约定教育提供了另一个机会。 代码评审人员越是吹毛求疵,团队中的每个人就会越快地了解约定,代码就会越干净。
入乡随俗: 最重要的是惯例,每个开发人员都应该遵循这句古老的格言“入乡随俗”。在处理新文件时,请查看现有代码的结构。是否所有的公共变量和方法都在私有变量和方法之前声明?这些方法是按字母顺序排列的吗?变量在 firstServerName 中使用“camel case”还是在 first_server_name 中使用“snake case”?当你看到任何看起来可能是约定的东西时,跟着它走。在做设计决策时,问问自己是否在项目的其他地方也做了类似的决策;如果是,找到一个现有的示例,并在新代码中使用相同的方法。
不要改变现有的惯例 抵制“改进”现有公约的冲动。有一个“更好的主意”并不足以成为产生矛盾的借口。你的新想法可能确实更好,但是一致性对不一致性的价值几乎总是大于一种方法对另一种方法的价值。在引入不一致的行为之前,问自己两个问题。首先,您是否有重要的新信息来证明您的方法是正确的,而这在旧的约定建立时是没有的?第二,新方法是否更好,值得花时间更新所有旧的用法?如果您的组织认为这两个问题的答案都是“是”,那么就继续进行升级;当你完成的时候,应该没有任何旧的惯例的迹象。但是,您仍然面临其他开发人员不知道新约定的风险,因此他们可能在将来重新引入旧的方法。总的来说,重新考虑已建立的约定很少能很好地利用开发人员的时间。

别做过了头:

一致性不仅意味着相似的事情应该以相似的方式去做,还意味着不同的事情应该以不同的方式去做。如果您过于热衷于一致性,并试图强制将不同的东西放在相同的方法中,例如对真正不同的东西使用相同的变量名,或者对不适合该模式的任务使用现有的设计模式,那么您将创建复杂性和混乱。只有当开发人员确信“如果它看起来像 x,那么它实际上就是 x”时,一致性才会带来好处。

结论:

一致性是投资心态的另一个例子。确保一致性需要一些额外的工作:决定约定的工作、创建自动检查器的工作、寻找类似的情况以在新代码中模拟的工作,以及在代码评审中培训团队的工作。 这种投资的回报是您的代码将更加明显。开发人员将能够更快、更准确地理解代码的行为,这将使他们工作得更快,bug 更少。

原文链接
https://t.cn/A6wjnc7i

namo-amitabhaya! https://t.cn/Rf37NIb

西班牙的“12个不一样”
西班牙这个南欧国家每年会吸引很多人去度假旅行。但这也有很多和我们想象不一样的东西,今天就总结下西班牙的12个不一样,来一起看看吧——

1这里全国都午休
西班牙的工作时间是每天上午9点到下午2点。傍晚4-5点到晚上7-8点。
在中午2-4点有个长长的午饭、午休时间。

2除了咖啡,不喝热水。
西班牙全国范围内,无论是酒店、医院、餐厅、学校都只喝冷水,冰水,不喝“白开”

3 这里的假期多到爆
除了双休日,国际假日,还有统一的国庆日,传统宗教节日,此外自治区、市、镇、村,都有自己的节日,到了节日就要放假。

4奶比水便宜
西班牙盛产牛奶和奶制品,一大盒纯正的牛奶1-2欧元。此外各种奶酪、酸奶质量非常好。

5菜比肉贵
西班牙的现代畜牧业,渔业发达,牛羊鱼虾非常实惠,反倒是蔬菜水果比较贵。

6国歌没有歌词
西班牙国歌《皇家进行曲》只有曲子,没有歌词。

7没有“重点”学校
西班牙的学校只分为政府补贴的公立学校和商业化运作的私立学校,没有所谓的重点,非重点学校。

8城乡无差异
在基础设施和生活环境方面,全国都是统一的标准,没有刻意建设的发达城市,和刻意忽略的不发达城市,所有地区的发展程度都基本一致,只有大小,人口多少的规模之差,没有质量上的巨大差距。

9 罚款可以打折。
交通罚款和其它一些市政罚款,如果按时提前交可以享受折扣优惠。

10斗牛并不是国粹
一说到西班牙大家就只会想到斗牛,其实不是所有西班牙人都热衷于斗牛。一些人认为斗牛运动是对斗牛这个物种的保护,但是也有环保人士认为斗牛对人和牛都过于残忍。

11不推崇英语
西班牙的国语是西班牙语,是全球使用人口超多的一门语言,覆盖地区有伊比利亚半岛,南美洲,美国南部,是西班牙重点保护的文化遗产之一,因为历史上在英西大海战中被英国阴了,西班牙从此从海上霸主地位上跌下,所以和英国是不共戴天的关系,在西班牙全国范围内并不强制普及英语。

12 没有公厕
西班牙是没有公共厕所的,只有在机场、快餐店、餐厅、大型商场、里面有卫生间,或者在大型户外游行集会时设立零时公共厕所。

#八月你好# 当孩子说不的时候家长应该怎么做呢?
1.当孩子说这是“我的,我的”时,父母不要着急强迫孩子去分享。这个时候要尊重他,自己的东西他自己做主。
2.当孩子热衷于说“不”的时候,只是在通过语言来体验“我”与他人分离的快乐,家长们不必过分较真,也没必要强调纠正,该怎么做就怎么做,不用和他强调分辩,过一段时间孩子自然就会过去了。这个时期应尽可能尊重孩子的选择,满足孩子的需要。
3.当孩子打人咬人时我们只去制止,孩子的行为,对孩子来说“打死你”是排除的意思,不要去谴责也不要说教,因为那和粗野的行为是不同的,尽量让孩子在不违反规则的情况下使用他的自我。
4.处在这个敏感期的孩子,家长一定不要和孩子斗争,不要和孩子较劲,因为这是一个人形成自我的起点。 https://t.cn/RTCDCbO


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 神奇的收到晚安短信[心] 内容也很符合我当下的心境 我总是不假思索的上路,因为出发的感觉实在太好了 新的一年,也祝大家不害怕的勇往直前 借此我也来年度总结一下吧
  • 21考研同学们,研考网上咨询中这14所211院校明确保护一志愿!可以作为院校选择的参考哟。学校明确说不接受校外调剂或者接受调剂,就意味着这些学校不会故意不要一志
  • 健康是一种责任。也是一种义务,爱妻,爱子,爱家庭,你不爱身体等于零,有权有钱有成功。没有健康一场空。男人失去健康,老婆将成为别人的新娘,女人失去健康,老公将重新
  • “口罩脸”,您中招了吗? 一、什么是口罩脸? 受新冠病毒影响,并伴随复工复产,全国人民每天出门都要佩戴口罩,如今天气越发炎热,长时间佩戴口罩,会导致面部皮肤出
  • 近日,梯影传媒联合各大品牌发起的 #有你在就OK# 联名活动,打造的OK手势新玩法,成为2020年楼宇媒体——品牌复工联名推广意想不到的成功营销案例。 以58同
  • 我一定要表达一下我的激动之情[泪]我她妈追的都是神仙[心]我的追星路太顺畅了[泪][心] 1⃣何老师在我最近追的最喜欢的一部律政综艺里cue了嘉嘉,说他是自己最
  • 就如同一对明知道很多很多年以后一定会分手的情侣,他在“恋爱”过程中尽力让你收获最多最多的快乐,以确保将来失去他的时候,我们有足够的美好回忆可以度过剩下的日子;或
  • 说完我奔溃了 哭了好久 姑姑安慰我好久好久那时候我总是想着自己是不是她生的 为什么母性的温柔在她身上一点也没有 不是打就是骂要么是吼我有个同学 生日的时候 她
  • 你值得呀!是因为他的敬业他的善良才喜欢他的呀!
  • 尤其是感情线,深长,且向上延伸,寓意,面对感情时,态度良好,积极主动,正能量强,情感经历不会出现大多波折,情侣顺畅,一定会有一段美满的姻缘等着你。尤其是感情线,
  • 丰山在南阳城北30里,是一座历史文化名山,它拥有从远古走来的文明和数千年的文字记载,《庄子》《山海经》《南都赋》都有关于它的记载;李白、元好问等历史名人曾多次登
  • 我的好爷爷,勤勤恳恳一辈子,我上学的时候叫我要认真读书,上班之后叫我认真工作,辛苦了一辈子也没享过什么福,真的是看着现在的爷爷除了静静的陪伴不知道还能为他做些什
  • 女人在吵架上有一个逻辑思维让男人很不爽,感觉女人总是觉得自己是对的,男人总是错的,即便道理在男人这边,最后不好好哄女人,又会被说情商低,不在乎她,其实我相信你也
  • 注意如果有红肿、渗出,赶紧联系手术医生。多活动颈部,前后,左右,缓慢而幅度大的运动,减少电极延长线在颈部的瘢痕缩紧。
  • #薛之谦##高磊鑫# 最近看到这样一句话颇有感慨…”不是所有分手都能修炼成薛之谦和高磊鑫”喜欢薛之谦更多了一点 或许是因为…虽然作为一个外人但对这段难得的真挚的
  • 工作后不想去的应酬多的是,既然加入社团组织还是去看看吧,兴许能碰上心仪对象呢27.双肩包(一个人去周遭城市走走的时候,上课的时候,容量大,而且方便,还有点小文艺
  • 温柔的人,大多都是亲身经历了许许多多的痛苦后,决定不再让其他人遭受自己的这般痛苦,这份血淋淋的“体贴”人们称它为“温柔”。一个柔和的人,总会以一种最大的善意来对
  • 天是灰的,水是浑的,蔬菜是带药的,肉是速成的,重大疾病是普遍的。天是灰的,水是浑的,蔬菜是带药的,肉是速成的,重大疾病是普遍的。
  • 不遇到一点事情你就不会意识到誰都靠不住只能靠自己不管你的圈子多大 人脉多广 关系多好只有自己强大才不会很多时候都处在被动下就不会有那种寄人篱下只能靠别人的感觉男
  • 带给我的,教会我的,所有所有~我想要一直珍藏,把你放在心里,再不去打扰,偶尔怀念,不断记起你带给我的东西,那个时代的真挚人情和各色的人们,让我懂得人并不只有一种