人人都要懂点设计学


本文首发于微信公众号twowinter,转载请注明作者:http://blog.youkuaiyun.com/iotisan/

点此进入公众号查看。

熟悉twowinter的朋友都知道我喜欢罗永浩,由于这层粉丝情结,受到了很多正面影响,获取了一些专业以外的知识。

今天想分享的观点就是和罗老师擅长的设计有关,似乎是锤子科技的池建强老师推荐了这本书 –《写给大家看的设计书》。书中提到了设计的四大基本原则,很有意思,有兴趣的朋友可以找来看看。

设计学上的亲密性原则

设计原则的第一个是亲密性:将相关项组织在一起,它们会形成一个视觉单元,有助于组织信息,减少混乱,提供清晰的结构。

书中的这个案例比较经典,不难发现,借助空行,右边这个列表将相关内容做了聚合后,表达明显变得清晰。

推广开去,这样的设计思想可以运用在我们的文档中,以及代码中。

代码的垂直留白

谷歌C++编程规范之中对此做了建议,那就是适当的留白。我们将内容相关的代码聚合在一起,使用空行与其他代码块做点小分割,这样可以体现出自己的逻辑思路,使得代码更加易读。

除了上面这一点,还有一点很多人没注意。既然留白这么重要,不要随随便便地留白。

垂直留白越少越好。这不仅仅是规则而是原则问题了:不是非常有必要的话就不要使用空行。同一屏可以显示越多的代码,程序的控制流就越容易理解。当然,过于密集的代码块和过于疏松的代码块同样难看,取决于你的判断,但通常是越少越好。

twowinter有个同事,人很洒脱,代码也跟着洒脱,在他的代码中随处可见恣意驰骋的空白,以及大块大块的调试代码。给审核的人造成了很大的负担,这些空行和无效注释都应该在提交代码前就自己将之扼杀在摇篮之中了。给别人添麻烦,多不好。

是的,你应该也能想到,这个代码有点乱。一个人的代码缺乏条理,则很可能在工作中也是个同样缺乏条理的人。(注意,这是本文的金句,与诸君共勉。)

所以,这个同事离职了。。。

代码的水平留白

说到了垂直留白,顺便也提下水平留白。前一篇写 if 语句不要任性中就提到了控制语句中要按格式添加空格,使得书写更加规范和美观。

除了可见的留白外,一些不可见的留白也要稍加注意下。

添加冗余的留白会给其他人编辑时造成额外负担,尤其在他们合并代码的时候,即使他们可以去除掉这个空格。因此,不要引入多余的空格。如果你不小心引入了多余的空格要尽快去掉,或者在专门清理空格时去掉(确信没有其他人同时在使用该文件)。

今天CodeReview时就活捉一枚多余空格。

End

设计学上的留白和聚合思想,可以借鉴到我们的日常编码工作中。代码提交之前都应自我审核下,过滤掉多余的空行和空格,避免给他人造成负担。

好了,这就是今天要分享的内容,虽然这里是在分享编程规范,如果你有心的话,也许对文档编写也能有所帮助。


实验1 类的定义、对象数组的使用 1. 定义一个生类(Student), 属性有 1)非静态属性String studentNumber 2)非静态属性String studentName 3)非静态属性int markForMaths 4)非静态属性int markForEnglish 5)非静态属性int markForScience 方法有: 1)构造方法Student(String number, String name) 2)构造方法Student() 3)String getNumber() 4)String getName() 5)void enterMarks(int markForMaths, int markForEnglish, int markForScience) 6)int getMathsMark() 7)int getEnglishMark() 8)int getScienceMark() 9)double calculateAverage() 10)String toString() 返回生信息,包括号、姓名、数成绩、英语成绩、科成绩、平均成绩。 注意:为了保证calculateAverage返回double类型,需要把三个分数的和除以3.0,而不是3. 另外,分数的初始值是什么?如果每个分数初始值为0,会造成混淆,分数为0表示还没有输入分数,还是分数确实为0?有更好的初始值吗? 编写Student类,并且编写一个StudentTest类,对Student类进行测试。 StudentTest类运行效果如下: 请输入号:2011211301 请输入生姓名:王晓 请输入生三门课成绩(数,英语,科):88,79,90 生信息如下: 号:2011211301 姓名:王晓 数成绩:88 英语成绩:79 科成绩:90 平均成绩:85.66666666666667 2.定义一个StudentList类用来存储Student对象 属性有 1)Student[] list; //list存储生对象 2)int total; //生总人数 方法有: 1)StudentList(int length) //length是数组长度 2)boolean add(Student stu) //增加stu到数组中,成功,返回true,否则false 3)boolean remove(int no) //删除第no个数组元素,删除成功,返回true,否则false 4)boolean remove(Student number) //删除号为number的生,删除成功,返回true,否则false 5)boolean isEmpty() //判断数组是否为空,若是,返回true,否则false 6)Student getItem(int no) //返回第no个生 7)Student getItem(Student number) //返回号为number的生,若该生不存在,返回null。 8) int getTotal() 返回生总人数 编写StudentList类,并且编写一个StudentListTest类,对StudentList类进行测试。 StudentListTest类运行效果: 菜单如下,请输入 1~8代表您要执行的操作: 1. 增加1个生 2. 根据号删除生 3. 根据位置删除生 4. 判断是否为空 5.根据位置返回生 6.根据号返回生 7. 输出全部生信息 8.退出程序 请输入您的操作:1 请输入生信息: 号:2011211301 姓名:王晓 数成绩:88 英语成绩:79 科成绩:90 ---目前有1个生,信息为---: 号:2011211301 姓名:王晓 数成绩:88 英语成绩:79 科成绩:90 平均成绩:85.66666666666667 请输入您的操作:1 号:2011211311 姓名:李辉 数成绩:80 英语成绩:79 科成绩:93 ---目前有2个生,信息为---: 号:2011211301 姓名:王晓 数成绩:88 英语成绩:79 科成绩:90 平均成绩:85.66666666666667 姓名:李辉 数成绩:80 英语成绩:79 科成绩:93 平均成绩:84.0 请输入您的操作:5 请输入生位置:10 对不起,没有对应的生 请输入您的操作:5 请输入生位置:2 生信息如下: 姓名:李辉 数成绩:80 英语成绩:79 科成绩:93 平均成绩:84.0 请输入您的操作:3 请输入要删除第几个生:2 删除成功 ---目前有1个生,信息为:
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值