试着品评:远离你的电脑,代码写得更好!

其实写代码,只是为了砌砖块,这和楼怎么设计真的没什么关系。

而开发工具,就是各种吊装设备,搅拌设备,砌筑工具,这也和楼房怎么设计没什么关系。

盖楼房,上来就动这些设备,处理那些材料,这只能是砌猪圈!

盖楼房,一定得先进行地质堪测,结构设计,外观设计,布局设计...,

这一切设计都是在纸上或三维设计软件中完成,与动手盖房子没啥关系。

我想作者就是要说明一个问题:架构设计和软件开发是两个阶段的事情!

如果你有足够的开发经验,那么设计完全可以不动工具,就完成一切。

当然了,有些并不掌握的技术,一定需要边测试,边融入到设计当中去,也即研发与项目融合进行。

个人愚见,不足为鉴,如有失言,请无视之。

远离你的电脑,代码写得更好!

本文是html5tricks原创翻译,转载请看清文末的转载要求,谢谢合作!

我最近才意识到,如果你对着电脑,用着编译器、IDE和工具等,是搞不出什么好代码的。最佳的编程地点是——远离你的这些工具——在一个能让你正确思考的地方,有条不紊地写代码。一般来说,对于一种你熟的不能再熟的编程语言,在你的大脑计算机里翻译程序,甚至和用编译器编译(还有解释器解释)是一样容易的。甚至,你可能最后想出来的程序比计算机更复杂更酷。

有一次,我在火车上旅行。我虽然带了笔记本,但是没有网。而不幸的是,我用的是商业编程语言(IDL),需要得到网站许可方能使用。但是没网就意味着得不到网站的授权,得不到网站的授权,就意味着我就完全没法运行编译器和IDE。哦,my God!IDL的商业许可不但贵,而且它的编译器还限制我在自己的编辑器上写代码,这个破编程语言,谁爱用谁用!但是我想说的是,这件事启发了我。

我记得我在哪里看到过这样一个帖子,概括起来的中心意识是:

我从我第一个老板那学到的其中一个最好的教训是:当你的代码不能如期运行时,不要老是依赖调试器,试着自己思考一下。

但是因为有了编译器,使得很少有人会去这么做。这种心态很容易理解,也很正常。我们一般的编码流程是:

1)写代码,即使写得很差

2)编译之后执行代码

3)用简单的事例测试

4)发现不能工作

5)小小的改一下,再看看问题是否能解决

6)不断重复过程5)

最后得到的代码很可能满是bug、不便于测试,然后编程人员自己都无从下手了。

远离你的电脑,迫使你不得不先在自己的大脑里思考一遍——当然,这会比你用电脑来编译和运行代码所花费的时间更长。但是,你不会想着——在代码里小修改一下再运行看看——这种愚蠢的事,你会思考要用哪些代码执行什么。也正是在火车上的那一天,我意识到,自从我过了Computing A-Level 考试,我就再也没有在纸上写过一句代码。

在另一次我写代码的时候,我想试试能不能远离电脑来写代码,我先是想出了一段高质量基本无bug的代码,然后写在纸上面,思考是否有需要纠正的,然后复制到电脑上,再想想有没有问题了,最后才在编译器上编译。而我从纸上拷贝过去的代码,尽管有涉及大量递归的图像分割程序,但是奇迹般的,我一次就成功了!

这种感觉真的超级棒。最后,我希望我的这个建议能对各位有用!

译文链接:http://news.html5tricks.com/code-better-get-away-from-pc.html
英文原文:Want to write some code? Get away from your computer!
翻译作者:html5tricks – 蒋丽丽
[ 转载必须在正文中标注并保留原文链接、译文链接和译者等信息。]

时间: 2024-07-30 05:05:15

试着品评:远离你的电脑,代码写得更好!的相关文章

c#-远程唤醒电脑代码,求详解

问题描述 远程唤醒电脑代码,求详解 private IPEndPoint point;private UdpClient client = new UdpClient();/** 唤醒远程机器方法 @param mac 要唤醒的机器的MAC IP port udp消息发送端口* 摘要:唤醒方法为网卡提供的魔术封包功能,即以广播模式发送6个FF加上16遍目标MAC地址的字节数组**/private void wakeUp(string mac int port string ip){byte[]

由于ACCESS和SQL Server数据库是经常使用的两种数据库, 而且操作上很相似,决定将代码写在一起,但在操作上出了问题

问题描述 问题:由于ACCESS和SQLServer数据库是经常使用的两种数据库,而且操作上很相似,决定将代码写在一起,用一个数据库类型选择来做判断,代码如下//数据库类型选择if(DatabaseType=="ACCESS"){OleDbDataReadermyReader=GetMyOleDbDataReader(mySql);}else{SqlDataReadermyReader=GetMyReader(mySql);}if(myReader.Read()){//执行语句}错误提

for-关于循环这两个代码哪个效率更高?

问题描述 关于循环这两个代码哪个效率更高? 代码1: i=0; while(1) { for(i=0;i<25;i++) { a=1; } for(;i<50;i++) { a=0; } i=0; } 代码2: i=0; while(1) { i++; switch(i) { case 1: a=1; break; case 25: a=0; break; case 50: i=0; break; } } 解决方案 回复chezunyin: 不好说,不同的处理器执行不同的指令花费的时间不同,这

for层次-用javascript代码写出来,怎么写

问题描述 用javascript代码写出来,怎么写 解决方案 html中的javascript代码怎么写javascript 写的tab页代码写javascript代码的技巧 解决方案二: alert(* ** ** * ); 解决方案三: alert(* ** ** * ); 解决方案四: alert确实可以,但是太土了,而且是个弹窗啊 这个题是考你for循环的使用,每次打出几个*** 算是一个算法吧,这个你可以搜一下,三角形代码输出算法,然后改一下输出行数和*的个数就可以了!! 解决方案五:

代码写给搜索 内容面向访客

许多个人站长在建设网站的时候都很迷惑,到底什么样的网站既适合访客又利于搜索呢?大家一直在寻找着这样的平衡点. 在这里我想说的题目就是这样的平衡点:代码写给搜索,内容面向访客. 站长在自己做网站或者借用别的网站模板的时候,应该选择可编辑性较大的模板,能够随心所欲的处理访客看到的内容和搜索引擎抓取的内容,每个页面都要充分做到这样的和谐统一,让访客看的喜欢,让搜索引擎对你的页面有好感. 就拿一个网站首页来说,首页可以说是网站最重要的地方,搜索引擎抓取最主要的也是首页. 个人认为,首页有3个地方最需要注

server-用C#代码写一个数据库导入系统,只是将excel表导入到SQL2008数据库中

问题描述 用C#代码写一个数据库导入系统,只是将excel表导入到SQL2008数据库中 用C#代码写一个数据库导入系统,只是将excel表导入到SQL2008数据库中, 我用的是offices 2010 前台是一个fileupload控件,一个button控件,选择excel文件,点击button按钮,直接把excel表中的内容导入到SQL数据库中.请问怎么实现这个功能?详细一些,谢谢 解决方案 建议你建两个数据库连接,一个连接excel,一个连接sql2008,然后把excel里数据取出来,

串口通信-51单片机串口发送字符串给电脑 自己写了程序但出不了结果

问题描述 51单片机串口发送字符串给电脑 自己写了程序但出不了结果 #include unsigned char code L1[] = "123456789"; unsigned char code L2[] = "12345678"; void delay(void) { unsigned char n,m; for(m=0;m<200;m++) for(n=0;n<250;n++); } void send_str() { unsigned i =

链表相关问题。。1是删除,当删除头节点的时候,会出现死循环 2插入代码写好,但是没有实现插入的功能

问题描述 链表相关问题..1是删除,当删除头节点的时候,会出现死循环 2插入代码写好,但是没有实现插入的功能 int main(){ int i = 0; int place = 0; int nodeData; char c; struct Link *head = NULL;//指向链表头 printf(""Do you want to append a new node(Y/N)""); scanf("" %c""&am

timer-参考网上代码写的C#音乐播放器,无法实现自动播放下一首歌,求助!

问题描述 参考网上代码写的C#音乐播放器,无法实现自动播放下一首歌,求助! 全部代码太长,只把自动播放部分的代码贴出来: private void timer1_Tick(object sender EventArgs e) { // 用Timer控件控制连续播放 if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded) { if (playOne == false) { if (selectOne <