发现一个特别好玩的事 每次等公交 老袁一看到有人赶不上车 或者有老人动作慢公交司机又准备走的那种情况 他特别热衷于吼两嗓子:诶诶~还有人没上。哈哈哈哈哈哈哈哈哈每次都吓我一跳这嗓门 不愧是jun人哈哈哈[赞](有几次我还以为是我们没上车 结果线路都跟我们没关 记下了他的又一个加分闪光点)
#小客优购# 一个媒体人眼中的小客
初识小客,是在一个深冬的下午。闺蜜对我说,有一家企业总是默默无闻的做好事,却从不宣扬。他们做的好事并不只是给贫困人群捐款捐物,而是以“授人以渔”的实际行动,让农民完成从“输血”到“造血”的本质变化,使很多贫困县的农民实现了从脱贫到致富的愿景。
我为此深感好奇,更多的是疑惑,在我从事新闻工作的十多年里,见过很多注重公益的企业家,他们帮助贫困地区修建小学,修建公路,深入到大山深处给贫困儿童送衣服,也给孤寡老人送温暖。在我们所有人眼里,这就是做好事,这就是慈善。而这家企业到底是怎样的慈善模式?带着这样的疑惑,我让闺蜜陪我去小客公司拜访,在这之前,我从未听说过小客,甚至不知道“小客”是干什么的。
走进小客,前台的背景墙上有一个非常可爱的LOGO,他竖着大拇指,蓝白相间的图案里映衬着一双大大的眼睛。头顶上还有一个非常可爱的发髻,他微笑的表情仿佛在欢迎所有的来宾。我不禁被他的可爱震到了,举起手机把他保存在我的相册里。
小客公司极具现代风格的装修融合了时尚元素,配色鲜明,设计感极强,看的出创始人是一位热爱生活,有文艺范儿的小青年。一楼的左手边有一个很大的会议室,里面摆满了来自全国各地的锦旗和荣誉证书,其中一间办公室里有各种农产品的包装盒,闺蜜说农民的产品都是直接从田间采收,根本没有任何包装,考虑到他们的困难,小客公司特意定制了这些包装盒,为了方便农民销售。机房里,工作人员都在忙碌着,上了二楼,是更大的机房和客服中心。还有业务部和发货部。
走进董事长的办公室,一对非常年轻的夫妇接待了我们,坐下来才知是“小客”的创始人。通过了解得知,“小客”全称北京小客网络科技有限公司,于2014年6月成立,凭借优秀的研发团队与营销团队打造了线下智慧社区、线上智慧商城两大服务共享体系,通过线上销售,有效传播与对接生态、旅游、特色文化等资源,进而实现特色产品供给与精准扶贫的供需对接。小客科技创始人说,真正扶贫,不是你给贫困户捐点钱捐点物那么简单,而是要凝聚爱心,铸就希望。用自己的力量让贫困地区的老百姓看到希望,实现脱贫,实现致富。他简短而朴实的话铿锵有力。企业家和商人的区别大概就是,商人关注的是公司账户,而企业家要履行社会责任。小客科技曾荣获国内5项专利技术、9项著作权、107件注册商标。以及AAA级企业认证,自创立以来,一直在用实实在在的行动诠释企业初心使命,对贫困地区给予了无私的帮助和支持。
当我问到小客是怎样去帮助贫困地区的老百姓时,创始人打开手机让我关注了“小客优购”的公众号和“小客微淘”的APP,打开商城,琳琅满目的商品几乎全部来自贫困地区。创始人说,这就是我和小客全体会员做的事情,助推脱贫攻坚。通过我们共同的努力,让更多的贫困地区实现致富,让贫困百姓多赚钱,让消费者获得原天然高品质的商品,他说,小客的会员来自全国各地,如果没有他们,就没有小客的今天,更没有如今贫困老百姓的笑脸。所以我感谢小客的全体会员,他们与小客风雨同舟,携手并进,正是有了他们的支持,才让中国这么多偏远地区的贫困老百姓实现了脱贫。也是全体会员的努力和信任,陪伴小客一路成长。
让我深受感动的是创始人的真诚和善良。小客在创业初期并不顺利,他们夫妻经历了我们无法感知的压力却依旧未改初心,热衷慈善。他们的真诚触碰到了我内心的柔软。他们与我年纪相仿,在这个年纪里,我们每个人都很拼,有的为了生存,有的为了更好的生活。而他们夫妻,却有这样的格局,他们帮助了那么多的人却依旧谦虚低调,言语中满是对小客会员的感激之情。他们在谈到创业初期的艰苦时,彼此相视而笑,阳光暖暖的洒进来,照射在他们的身上,温情满满。
2020年初期,一场突如其来的疫情打乱了我们的生活。我接到小客创始人的电话,他急切的问我,能否帮忙联系一些真正有需求的一线防疫人员?他想尽自己的力量去捐助。在那段时间,物资紧缺,最常用的口罩竟然成了供不应求的稀缺品。而小客创始人却多方筹措,以高于市场多倍的价格买到了口罩、护目镜、防护服和消毒用品。他对我说,这些物资直接发送到有需求的单位,不署名,不留信息。我理解他们夫妻低调行事的性格,但是任何单位都不接收没有信息的物资,于是,我陪同他们夫妻一起去捐赠。那一个月,我们几乎没有停歇,不停的往返于北京的大街小巷。西客站的值勤武警、消防、民警、交警以及北京市民政、街道、社区、派出所等一线防疫单位都收到了小客的爱心捐赠。他们的正能量也鼓舞着我。让我感受到了一种家国情怀。
越来越多的人成为了小客的会员,也有越来越多的人加入了小客智慧商城,我抱着试试看的态度在小客智慧商城买了一款“佳木斯长粒香米”,第一天订货,第二天就收到了顺丰发来的香米,我惊叹疫情期间小客的发货速度竟然如此神速!打开包装,颗颗饱满,卖家告诉我,这是当地农民种植的有机香米,无任何添加,从种植到采收再到打包发货,均是他们亲自动手,他非常感谢我对农民的支持,没有任何吹嘘,卖家用最质朴的语言描述,而我内心却泛起了波澜,只不过是买了一袋米,在那些农民的眼里,我便是帮助他们的大善人,值得他们尊重。香米的味道不同于市面买到的,还在电饭煲里的时候,便是满屋飘香,妈妈说这是她第一次吃到味道这么好的大米,家里人也纷纷赞赏,这一次买米的经历不仅得到全家人的认可,也为贫困地区的农民出了一份自己的力。
我从最初了解小客,走进小客。我深感在这个互联网时代,这种最新型的互助模式,可以让素昧平生的我们互相帮助、互相取暖。在小客这个商城里,我们会员买的每一份商品,出的每一份力都是帮助贫困地区的老百姓,正是因为所有会员的支持,各贫困地区的商务局、农业局才纷纷致函小客,借助小客智慧商城为贫困地区出力,为我国脱贫攻坚助力!而在我们的挖券游戏中,会员之间又成为了彼此最信赖的玩家。正是我们之间的互相借力,互相依存,才使得在疫情期间的我们衣食无忧。
就在四月初,小客被一些别有用心的人诋毁。不仅伪造小客公章,更是发了一份莫须有的假文件,小客在第一时间发表了申明并且报警。这些人又开始冒充客服骗钱,然后又进行外挂软件侵入,动摇会员对小客的信心。回过头来看,这真是一场有预谋的侵袭,能使的劲全使上了。就在今天,网安介入,新浪在接到立案通知书的第一时间便删除了此人的微博,接下来便是深入调查了。中国的法律告诉我们每个人,网络并非法外之地,违法之前望三思!
这次事件也给小客公司的正常运行带来了波动。我做为一名普通会员,第一反应就是小客和其他公司一样不管这些会员了,我们没有办法保证自己的利益了。晚上翻来覆去睡不着,开始牙疼,开始和所有人一样担心,在群里和所有会员讨论,大家都和我一样悲观。直到有一个会员发声,他说,这个世界上从来没有一帆风顺的事,哪个公司不遇点困难和危机?而以前一直都是公司或者平台跑了,留下一群会员。而现在小客公司依旧在正常运转,只不过因为这次事件导致的波动使公司的整体效率没有之前那么快,你们就马上消极悲观,自己准备撤离。你们是对自己没信心还是对小客没信心?如果对小客没信心,那么你当初义无反顾的走进小客是抱着怎样的心态?
他说完这句话以后,所有的人都陷入了沉默,可能大家和我一样都在思索。是啊,当初义无顾的走进小客,选择小客,成为小客的忠实会员,是因为小客带给我真正的实惠,真正的快乐。小客在我最难的时候扶持我,做我最坚实的后盾。而如今他面临风雨,我却做了逃兵。难道,我不该与他风雨同舟携手共进吗?
不断的有会员站出来发声,相互鼓励。我们看到的小客依然屹立不倒。用他宽阔的胸怀接纳了我这种只想同甘不想共苦的会员,公司新出的政策让我们所有的人都有了信心,只剩下了行动,我看到大家都在行动,我也加入其中。在我们所有会员的努力和坚持下,小客的数据持续回升,我们所有人都站在小客的脚下,用我们的肩膀为他架起一座桥梁,为他这次顺利过关保驾护航!就像他当初接纳我们的时候一样,扶持我们走过最黑暗的那段时光。我仿佛又看到了他的微笑,就像我第一次见到他时,他在前台的背景墙上竖起大拇指微笑着迎接所有的来宾。
不经历风雨,怎么见彩虹。我们与小客永远同在,我们与小客携手并肩,砥砺前行!请相信,小客一直在我们的背后,迎接所有会员的归来!
来源:商业财经报 微信公众
#小客商城# #媒体人#
初识小客,是在一个深冬的下午。闺蜜对我说,有一家企业总是默默无闻的做好事,却从不宣扬。他们做的好事并不只是给贫困人群捐款捐物,而是以“授人以渔”的实际行动,让农民完成从“输血”到“造血”的本质变化,使很多贫困县的农民实现了从脱贫到致富的愿景。
我为此深感好奇,更多的是疑惑,在我从事新闻工作的十多年里,见过很多注重公益的企业家,他们帮助贫困地区修建小学,修建公路,深入到大山深处给贫困儿童送衣服,也给孤寡老人送温暖。在我们所有人眼里,这就是做好事,这就是慈善。而这家企业到底是怎样的慈善模式?带着这样的疑惑,我让闺蜜陪我去小客公司拜访,在这之前,我从未听说过小客,甚至不知道“小客”是干什么的。
走进小客,前台的背景墙上有一个非常可爱的LOGO,他竖着大拇指,蓝白相间的图案里映衬着一双大大的眼睛。头顶上还有一个非常可爱的发髻,他微笑的表情仿佛在欢迎所有的来宾。我不禁被他的可爱震到了,举起手机把他保存在我的相册里。
小客公司极具现代风格的装修融合了时尚元素,配色鲜明,设计感极强,看的出创始人是一位热爱生活,有文艺范儿的小青年。一楼的左手边有一个很大的会议室,里面摆满了来自全国各地的锦旗和荣誉证书,其中一间办公室里有各种农产品的包装盒,闺蜜说农民的产品都是直接从田间采收,根本没有任何包装,考虑到他们的困难,小客公司特意定制了这些包装盒,为了方便农民销售。机房里,工作人员都在忙碌着,上了二楼,是更大的机房和客服中心。还有业务部和发货部。
走进董事长的办公室,一对非常年轻的夫妇接待了我们,坐下来才知是“小客”的创始人。通过了解得知,“小客”全称北京小客网络科技有限公司,于2014年6月成立,凭借优秀的研发团队与营销团队打造了线下智慧社区、线上智慧商城两大服务共享体系,通过线上销售,有效传播与对接生态、旅游、特色文化等资源,进而实现特色产品供给与精准扶贫的供需对接。小客科技创始人说,真正扶贫,不是你给贫困户捐点钱捐点物那么简单,而是要凝聚爱心,铸就希望。用自己的力量让贫困地区的老百姓看到希望,实现脱贫,实现致富。他简短而朴实的话铿锵有力。企业家和商人的区别大概就是,商人关注的是公司账户,而企业家要履行社会责任。小客科技曾荣获国内5项专利技术、9项著作权、107件注册商标。以及AAA级企业认证,自创立以来,一直在用实实在在的行动诠释企业初心使命,对贫困地区给予了无私的帮助和支持。
当我问到小客是怎样去帮助贫困地区的老百姓时,创始人打开手机让我关注了“小客优购”的公众号和“小客微淘”的APP,打开商城,琳琅满目的商品几乎全部来自贫困地区。创始人说,这就是我和小客全体会员做的事情,助推脱贫攻坚。通过我们共同的努力,让更多的贫困地区实现致富,让贫困百姓多赚钱,让消费者获得原天然高品质的商品,他说,小客的会员来自全国各地,如果没有他们,就没有小客的今天,更没有如今贫困老百姓的笑脸。所以我感谢小客的全体会员,他们与小客风雨同舟,携手并进,正是有了他们的支持,才让中国这么多偏远地区的贫困老百姓实现了脱贫。也是全体会员的努力和信任,陪伴小客一路成长。
让我深受感动的是创始人的真诚和善良。小客在创业初期并不顺利,他们夫妻经历了我们无法感知的压力却依旧未改初心,热衷慈善。他们的真诚触碰到了我内心的柔软。他们与我年纪相仿,在这个年纪里,我们每个人都很拼,有的为了生存,有的为了更好的生活。而他们夫妻,却有这样的格局,他们帮助了那么多的人却依旧谦虚低调,言语中满是对小客会员的感激之情。他们在谈到创业初期的艰苦时,彼此相视而笑,阳光暖暖的洒进来,照射在他们的身上,温情满满。
2020年初期,一场突如其来的疫情打乱了我们的生活。我接到小客创始人的电话,他急切的问我,能否帮忙联系一些真正有需求的一线防疫人员?他想尽自己的力量去捐助。在那段时间,物资紧缺,最常用的口罩竟然成了供不应求的稀缺品。而小客创始人却多方筹措,以高于市场多倍的价格买到了口罩、护目镜、防护服和消毒用品。他对我说,这些物资直接发送到有需求的单位,不署名,不留信息。我理解他们夫妻低调行事的性格,但是任何单位都不接收没有信息的物资,于是,我陪同他们夫妻一起去捐赠。那一个月,我们几乎没有停歇,不停的往返于北京的大街小巷。西客站的值勤武警、消防、民警、交警以及北京市民政、街道、社区、派出所等一线防疫单位都收到了小客的爱心捐赠。他们的正能量也鼓舞着我。让我感受到了一种家国情怀。
越来越多的人成为了小客的会员,也有越来越多的人加入了小客智慧商城,我抱着试试看的态度在小客智慧商城买了一款“佳木斯长粒香米”,第一天订货,第二天就收到了顺丰发来的香米,我惊叹疫情期间小客的发货速度竟然如此神速!打开包装,颗颗饱满,卖家告诉我,这是当地农民种植的有机香米,无任何添加,从种植到采收再到打包发货,均是他们亲自动手,他非常感谢我对农民的支持,没有任何吹嘘,卖家用最质朴的语言描述,而我内心却泛起了波澜,只不过是买了一袋米,在那些农民的眼里,我便是帮助他们的大善人,值得他们尊重。香米的味道不同于市面买到的,还在电饭煲里的时候,便是满屋飘香,妈妈说这是她第一次吃到味道这么好的大米,家里人也纷纷赞赏,这一次买米的经历不仅得到全家人的认可,也为贫困地区的农民出了一份自己的力。
我从最初了解小客,走进小客。我深感在这个互联网时代,这种最新型的互助模式,可以让素昧平生的我们互相帮助、互相取暖。在小客这个商城里,我们会员买的每一份商品,出的每一份力都是帮助贫困地区的老百姓,正是因为所有会员的支持,各贫困地区的商务局、农业局才纷纷致函小客,借助小客智慧商城为贫困地区出力,为我国脱贫攻坚助力!而在我们的挖券游戏中,会员之间又成为了彼此最信赖的玩家。正是我们之间的互相借力,互相依存,才使得在疫情期间的我们衣食无忧。
就在四月初,小客被一些别有用心的人诋毁。不仅伪造小客公章,更是发了一份莫须有的假文件,小客在第一时间发表了申明并且报警。这些人又开始冒充客服骗钱,然后又进行外挂软件侵入,动摇会员对小客的信心。回过头来看,这真是一场有预谋的侵袭,能使的劲全使上了。就在今天,网安介入,新浪在接到立案通知书的第一时间便删除了此人的微博,接下来便是深入调查了。中国的法律告诉我们每个人,网络并非法外之地,违法之前望三思!
这次事件也给小客公司的正常运行带来了波动。我做为一名普通会员,第一反应就是小客和其他公司一样不管这些会员了,我们没有办法保证自己的利益了。晚上翻来覆去睡不着,开始牙疼,开始和所有人一样担心,在群里和所有会员讨论,大家都和我一样悲观。直到有一个会员发声,他说,这个世界上从来没有一帆风顺的事,哪个公司不遇点困难和危机?而以前一直都是公司或者平台跑了,留下一群会员。而现在小客公司依旧在正常运转,只不过因为这次事件导致的波动使公司的整体效率没有之前那么快,你们就马上消极悲观,自己准备撤离。你们是对自己没信心还是对小客没信心?如果对小客没信心,那么你当初义无反顾的走进小客是抱着怎样的心态?
他说完这句话以后,所有的人都陷入了沉默,可能大家和我一样都在思索。是啊,当初义无顾的走进小客,选择小客,成为小客的忠实会员,是因为小客带给我真正的实惠,真正的快乐。小客在我最难的时候扶持我,做我最坚实的后盾。而如今他面临风雨,我却做了逃兵。难道,我不该与他风雨同舟携手共进吗?
不断的有会员站出来发声,相互鼓励。我们看到的小客依然屹立不倒。用他宽阔的胸怀接纳了我这种只想同甘不想共苦的会员,公司新出的政策让我们所有的人都有了信心,只剩下了行动,我看到大家都在行动,我也加入其中。在我们所有会员的努力和坚持下,小客的数据持续回升,我们所有人都站在小客的脚下,用我们的肩膀为他架起一座桥梁,为他这次顺利过关保驾护航!就像他当初接纳我们的时候一样,扶持我们走过最黑暗的那段时光。我仿佛又看到了他的微笑,就像我第一次见到他时,他在前台的背景墙上竖起大拇指微笑着迎接所有的来宾。
不经历风雨,怎么见彩虹。我们与小客永远同在,我们与小客携手并肩,砥砺前行!请相信,小客一直在我们的背后,迎接所有会员的归来!
来源:商业财经报 微信公众
#小客商城# #媒体人#
【软件的一致性】
软件本身固有复杂性、一致性、易改变性、不可见性等特点。
本文作者: 常柱
(有改动)
一致性是降低系统复杂性和使其行为更加明显的强大工具。如果一个系统是一致的,这意味着相似的事情以相似的方式完成,而不同的事情以不同的方式完成。 一致性创造了认知杠杆:一旦你学会了在一个地方如何做某件事,你就可以利用这些知识立即理解其他使用相同方法的地方。如果系统没有以一致的方式实现,开发人员必须分别了解每种情况。这需要更多的时间。
一致性可以减少错误。 如果一个系统是不一致的,两种情况可能看起来是相同的,但实际上它们是不同的。开发人员可能会看到一个看起来很熟悉的模式,并根据之前遇到的模式做出错误的假设。另一方面,如果系统是一致的,基于熟悉的情况做出的假设将是安全的。一致性使开发人员工作更快,错误更少。
更大范围的一致性是构件重用技术。
一致性的例子:
一致性可以应用于系统的多个级别。这里有几个例子:命名: 一致的方式使用名称的好处,如微软推荐的匈牙利命名法。
编码风格: 现在开发组织通常有样式指南,它将程序结构限制在编译器强制执行的规则之外。现代风格指南解决了一系列问题,比如缩进、大括号放置、声明顺序、命名、注释和对被认为是危险的语言特性的限制。样式指南使代码更容易阅读,并可以减少某些类型的错误。
接口: 具有多个实现的接口是一致性的另一个例子。一旦您理解了接口的一个实现,任何其他实现都会变得更容易理解,因为您已经知道它必须提供的特性。
设计模式: 设计模式是某些常见问题的普遍接受的解决方案,例如用户界面设计的模型-视图-控制器方法。如果您可以使用现有的设计模式来解决这个问题,那么实现将会进行得更快,更有可能工作,而且您的代码对读者来说也更容易理解。
不变量: 不变量是变量或结构的一个总是为真的属性。例如,存储文本行的数据结构可能强制一个不变式,即每行以换行字符结束。不变量减少了必须在代码中考虑的特殊情况的数量,使对代码的行为进行推理变得更容易。
数据表达、数据库: 采用前后一致的或标准数据格式。
确保一致性:
一致性很难保持,特别是当许多人长时间从事一个项目时。一组人可能不知道另一组人建立的惯例。新来者不知道这些规则,所以他们无意中违反了这些约定,并创建了与现有约定冲突的新约定。以下是一些建立和保持一致性的建议:
文档: 创建一个文档,列出最重要的总体约定,比如编码风格指南。将文档放置在开发人员可能看到的位置,例如项目 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
软件本身固有复杂性、一致性、易改变性、不可见性等特点。
本文作者: 常柱
(有改动)
一致性是降低系统复杂性和使其行为更加明显的强大工具。如果一个系统是一致的,这意味着相似的事情以相似的方式完成,而不同的事情以不同的方式完成。 一致性创造了认知杠杆:一旦你学会了在一个地方如何做某件事,你就可以利用这些知识立即理解其他使用相同方法的地方。如果系统没有以一致的方式实现,开发人员必须分别了解每种情况。这需要更多的时间。
一致性可以减少错误。 如果一个系统是不一致的,两种情况可能看起来是相同的,但实际上它们是不同的。开发人员可能会看到一个看起来很熟悉的模式,并根据之前遇到的模式做出错误的假设。另一方面,如果系统是一致的,基于熟悉的情况做出的假设将是安全的。一致性使开发人员工作更快,错误更少。
更大范围的一致性是构件重用技术。
一致性的例子:
一致性可以应用于系统的多个级别。这里有几个例子:命名: 一致的方式使用名称的好处,如微软推荐的匈牙利命名法。
编码风格: 现在开发组织通常有样式指南,它将程序结构限制在编译器强制执行的规则之外。现代风格指南解决了一系列问题,比如缩进、大括号放置、声明顺序、命名、注释和对被认为是危险的语言特性的限制。样式指南使代码更容易阅读,并可以减少某些类型的错误。
接口: 具有多个实现的接口是一致性的另一个例子。一旦您理解了接口的一个实现,任何其他实现都会变得更容易理解,因为您已经知道它必须提供的特性。
设计模式: 设计模式是某些常见问题的普遍接受的解决方案,例如用户界面设计的模型-视图-控制器方法。如果您可以使用现有的设计模式来解决这个问题,那么实现将会进行得更快,更有可能工作,而且您的代码对读者来说也更容易理解。
不变量: 不变量是变量或结构的一个总是为真的属性。例如,存储文本行的数据结构可能强制一个不变式,即每行以换行字符结束。不变量减少了必须在代码中考虑的特殊情况的数量,使对代码的行为进行推理变得更容易。
数据表达、数据库: 采用前后一致的或标准数据格式。
确保一致性:
一致性很难保持,特别是当许多人长时间从事一个项目时。一组人可能不知道另一组人建立的惯例。新来者不知道这些规则,所以他们无意中违反了这些约定,并创建了与现有约定冲突的新约定。以下是一些建立和保持一致性的建议:
文档: 创建一个文档,列出最重要的总体约定,比如编码风格指南。将文档放置在开发人员可能看到的位置,例如项目 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
✋热门推荐