代码是写给人看的,不是写个机器看的

《计算机程序的构造和解释》(简称为SICP)

这本书提到,代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已。如果代码是写给机器看的,那完全可以使用汇编语言或者机器语言(二进制),直接让机器执行。

 

我觉得

高级语言(java,php等都算),之所以被称为是高级语言,是相对汇编和机器指令而言的,他们更加可阅读性,更加符合人类语言的阅读习惯。

低级语言让人看起来非常吃力,不容易编写,所以产生高级语言,容易上手点。

作者强调的是,代码是写给人看的,所以要做到良好的编程风格,方便其他程序员阅读,维护。

所以这点我非常感悟,这确实是一个有力的证据。代码的可读性非常重要:注释,空白对其,工整都是风格的提现。保持这些编程风格最终目的只有一个:方便人类阅读。

诚然,就算你不按照好的风格来编写,编译器也能识别,通过编译。但基于可阅读性、方便维护考虑。程序员还是要有良好的编码风格。

 

就拿我们汉字的语言,一个段落要空格,写信的时候开篇有开篇的写法,其实我觉得都是为了可读性、优雅性。其实多个段落完全可以混合在一起,那样子很难阅读。让其他阅读人员理清楚思路就比较难。

 

其实语言中的逗号、顿号等标点符号也是为了方便人的阅读,断句,如果没有这些标点符号,阅读起来很吃力的。

 

基于一个方便其他程序员容易阅读的考虑,我觉得很多程序员喜欢以下的方式都方便其他程序员阅读

1、一个文件中定义多个类,放到一块。看起来吃力

2、代码之间没有缩进

3、多行代码实现可读性更强,偏偏要写在一行中。读起来费力,比如

 

$config = empty($_config['userinfo']['memory']['memcache']['addServer'])?$_G['config']['userinfo']['memory']['memcache']['addServer']:$_config['userinfo']['memory']['memcache']['addServer'];

 

为了方便人的阅读,写这么长。

时间: 2024-10-13 09:21:00

代码是写给人看的,不是写个机器看的的相关文章

新人的编程习惯与原则:代码是写给人看的

编程规范的目的是让代码更容易阅读,更容易维护,"代码是写给人看的"这个观点应该是写代码的基本原则. 1.命名规则:最好变量命名长度为6-15个字母之间,明确地表达出每个变量的意思,不要使用歧义单词或者生僻单词,方法命名遵循同样的规则,最好用动词表示,譬如Set开头表示设置.Match表示匹配等 2.方法长度:尽量使用短的方法体,一个方法体里面的代码行最好不要超过80行,超过就应该考虑把里面独立的内容提取放到另一个方法里面(也就是所谓的重构) 3.参数个数:参数个数不要太多,如果超过7个

你想知道天天写代码的那群人的密码是什么样的吗?

简评:密码这个东西,往往有明显的职业特点,显然么除了程序员一般很少有人会用二进制或者ASCII码做密码吧,而且程序员还有各种解析密码的方式,甚至对于他们而言密码可以是命令行指令或者是把中国古代的诗句变成你根本看不懂的代码,想知道天天写代码的那群人的密码究竟是什么样的呢,那就来看看吧. 程序员的密码设置情况 1.大约45%的密码全部是数字,只有12%的用户使用全部不是数字的密码,看来大家对数字的青睐程度要高得多. 2.大约5%的用户登录名与密码完全相同,无语了,懒人可不算少. 3.密码字符中重复1

设计-求大神帮我看一下代码哪里有问题,这是用verilog写的sdram的数据模块

问题描述 求大神帮我看一下代码哪里有问题,这是用verilog写的sdram的数据模块 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 12:07:50 04/20/2016 // Design Name: // Module Name: datage

编程语言学习-不会的题目不能看懂后独立写出代码

问题描述 不会的题目不能看懂后独立写出代码 不会的题目看懂答案代码后自己还是写不出来,是不是理解的还不够透彻,怎么办呢?是不是多看几遍直至自己能独立写出代码? 解决方案 实践少了,多动手,多参考别人的代码

我需要完全理解这部分代码才能确保它能够正常工作,如果由我来修复代码中的问题,我是不会这么写的,因此希望你也不要这么来写(转)

  Jim Bird是一位经验丰富的软件开发经理.项目经理与CTO,专注于软件开发与维护.软件质量与安全等领域中疑难问题的解决.在过去的15年间,Jim曾管理过团队建设并主导过高性能的财务系统的建设.他的主要兴趣在于如何提升小团队的效率以构建真正的软件:高质量.安全.可靠.高性能及适应性强.近日,Jim撰写了一篇博文,谈到了代码审查的价值,如何进行代码审查,代码审查的过程以及在代码审查中需要注意的问题,希望能为大家平日的代码审查带来一些启示. 开始代码审查 从一开始,开发者就会互相帮助,如果测试

有一个问题我一直很疑惑,一个软件系统是先有文档呢还是先有代码呢,一个UI前台界面是先写js呢还是先写css呢?

问题描述 有一个问题我一直很疑惑,一个软件系统是先有文档呢还是先有代码呢,一个UI前台界面是先写js呢还是先写css呢? 解决方案 一个软件系统是先有文档呢还是先有代码呢?应该是现有文档.这里文档的概念太宽泛,应该说明的是什么文档,细化到什么程度的文档.我们再撸起袖子准备开发一个软件系统的时候,首先得知道的是要开发什么(需求文档),怎么开发(设计文档).注意的是,这里并一定非得把需求文档写的多么细致,考虑每个业务分支逻辑,也不需要将设计文档细化到某个模块的时序图是怎么样的,逻辑判断是怎么样的.因

不依赖控件只使用代码对控件的TEXT属性分行怎么写?

问题描述 不依赖控件只使用代码对控件的TEXT属性分行怎么写? 不依赖控件只使用代码对控件的TEXT属性分行怎么写?那些别的方法实在是看不懂,有没有字符设置就能解决的? 解决方案 你说的是textbox允许多行?大概明白你的意思了,你想在textbox1.text里面换行?有多中方法,environment.newline或者"rn". 解决方案二: 如果是允许多行,可以在控件上勾选multiline,代码里可以写textbox.multiline=true

求高手指点-百度定位问题 高手看一下,这样写打不开

问题描述 百度定位问题 高手看一下,这样写打不开 package com.example.baidumaphz; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.ma

UWP入门(一) -- 先写几个简单控件简单熟悉下(别看这个)

原文:UWP入门(一) -- 先写几个简单控件简单熟悉下(别看这个) 1. MainPage.xmal <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Pivot x:Name="rootPivot" Title="Pivot Title"> <PivotItem Header="Pivot Item 1&qu