`

精通one,学习another,关注next

 
阅读更多

 

Tip 1 要方法而不是记忆

我的一个程序员朋友常跟我说记住超过 200 个 C++ 函数是多么的有帮助。

我从来不必去查找函数的定义,因此我可以比其他程序员编程快上50%。

他自豪的说。可结果是什么?

难道他不知道编译器的代码自动完成功能可以节约大量查找函数及输入函数的时间吗,另外当C#发布出来后,他在记忆函数上面的努力就白费了。

当然,编程中对函数的熟记是一件必需的事情,但是你应当花费更多的时间在学习做事的方法上, 比如说创建一个数据库连接, 如何产生RSS源等,然后是关注于代码是如何实现的。 学习做事的正确方法远比死记硬背重要。 正所谓 人有多大懒,才有多大闲

Tip 2 建立属于你自己的资源库

我们都会有因为这样或者那样原因而不得不建立的代码集。 我从来不记得连接数据库的准确代码语句,所以我每次都不得不在代码集中花10分钟去查询它。 为了解决这个问题,我创建了一个用于记录代码片段的 Word 文档,以帮助我记忆和查找。

我的一个同事建了个记录链接的书签,另外一个同事在他的邮件中存储了这些内容。 无论你的方法是什么,都是一种可以使你方便查找到文件或内容的好习惯。 当你建立你的知识库后,你会发现它将极大的帮助你去把代码写得更好和更快。

Tip 3 知道做什么而不是怎样做

很多初级程序员问我“我怎样做这个,或者我怎样做那个?”我总是会跟他们说“你想做什么呢?” 听闻此言后,他们会死盯着我,就好像我跟他们的妈妈约会了一样。

这就是我的下一个观点, 绝不要在知道你想做什么之前去学习怎样做,比如一个程序员想要搜索一个文本文件中是否存在的某个特定的词汇。

下面是用C#来实现该目的:

string fileContent;  
System.IO.FileStream myStream = new FileStream("c:\\aa.txt", FileMode.Open);  
System.IO.StreamReader myStreamReader = new StreamReader(myStream);   
fileContent = myStreamReader.ReadToEnd();  
myStreamReader.Close();  
int idx = fileContent.  
IndexOf("string");   
if (idx)  
{  
    return true  
}

现在我给他这些代码去做这件事,但是更重要的是 理解自己正在试着做的是什么。 在这个例子中我们想做的是:

  1. 打开一个文件
  2. 读其中的内容
  3. 关闭文件
  4. 搜索字串
  5. 如果找到了则输出结果

用这个方法来解决事情产生了以下结果:

  1. 它使语言无关
  2. 使你的精力集中在需要做什么上
  3. 使你的代码更易读和有效知道要做什么将使你的代码更有目的性。

现在在 C++、PHP、VB.NET、Ruby on Rails 中编写上述代码是很容易的事情了,因为你理解了 要做什么而不是怎样去做

Tip 4 创建适合你的注释风格

每一个程序员都讨厌注释,但是 为了写出更有质量和易读的代码,我们需要注释

问题是大多数程序员常被告知如何注释,一些公司希望每一行代码都有注释, 另外一些则想要在每个函数前面有一段注释,还有的规定在不同的代码块前注释。

我并不同意这种强制性的规定,只要 代码是可用的、易读的和有效的, 那么程序员应当可以用其个人喜好的格式来注释。 对我来说在每一行都注释将破坏代码的节奏,我更喜欢在函数的前面注释, 罗列我接下来一步步将要做什么,然后在函数中参考注释中所写的步骤进行编程。

这是适合我的模式,这样可以在我编程前帮助我组织设计,也保持了我的节奏,使我 不会因为需要注释而在编程时中断,也有助于其他人阅读我的代码

下面是我怎样注释的例子:

/* 1. Open File*  
   2. Read file into string*  
   3. Close file*  
   4. Search for key word*  
   5. If fond return true; 
*/  
string fileContent;  
//1.  
System.IO.FileStream myStream = new FileStream("c:\\aa.txt", FileMode.Open);  
System.IO.StreamReader myStreamReader = new StreamReader(myStream);  
//2.  
fileContent = myStreamReader.ReadToEnd();  
//3.  
myStreamReader.Close();   
//4.  
int idx = fileContent.IndexOf("string");  
if (idx)  
{  
    //5.  
    return true;  
}

这种注释风格使我和大多数程序员可以容易的阅读它。 那么,找一个适合你的注释风格吧。

Tip 5 精通one,学习another,关注next

有时有程序员发 email 问我他应该学习什么语言,什么是最好的编程语言等等。 你至少应该精通一门编程语言,可以相当好的去编写代码,然后再去学习掌握另外一门,逐渐的成长

以我自己为例,我精通 C#,擅长 PHP,并且已经开始使用 Ruby on Rails 大概有一两个月了。 为什么呢?精通一门语言可以使你进步,在进步中写更好的代码,找到完成任务更好的方法等

进步也是我作为一个程序员年复一年的工作,却仍没有觉得枯燥的原因。

41
16
分享到:
评论
10 楼 09108082 2013-01-17  
精通one,学习another,关注next
9 楼 lazy_ 2012-11-08  
引用
我更喜欢在函数的前面注释, 罗列我接下来一步步将要做什么,然后在函数中参考注释中所写的步骤进行编程。


引用
进步也是我作为一个程序员年复一年的工作,却仍没有觉得枯燥的原因。


这两点,我喜欢!顶一个!
8 楼 nodejs 2012-11-05  
coffeescript 写道
看到这个题目就想顶。

7 楼 witcheryne 2012-11-05  
justjavac 写道
houxinyou 写道
然后再去学习掌握另外一门,逐渐的成长.
我想问下,是只有学习掌握了另一门,才能成长,还是学习另一门语言,扩大了自己的视野,达到成长的目的?

每个程序员都不只是使用一种语言。他们学习的语言也更多。我工作中使用java C这些『工业级』语言开发,很多代码和sql都是用python来生成的。

我也学过lisp语言,只是被他的思想所折服,但是没有用这门语言开发过项目。

现在的语言无非就是 『C语言的风格,然后慢慢增加lisp的思想』!


最近在看 Lisp(Scheme & Clojure), 目的是看 “计算机构造与解析” 这本书。
Lisp 思想太棒了!
6 楼 witcheryne 2012-11-05  
houxinyou 写道
然后再去学习掌握另外一门,逐渐的成长.
我想问下,是只有学习掌握了另一门,才能成长,还是学习另一门语言,扩大了自己的视野,达到成长的目的?

每种语言都包含一种特有的哲学观。学习另一们语言肯定会扩展视野。
但是要扩展视野,不一定要学习另一们语言。

比如
将工作机从 windows 换成 linux .
尝试脱离ide工具,用用vim,emacs这类工具.
5 楼 justjavac 2012-11-05  
houxinyou 写道
然后再去学习掌握另外一门,逐渐的成长.
我想问下,是只有学习掌握了另一门,才能成长,还是学习另一门语言,扩大了自己的视野,达到成长的目的?

每个程序员都不只是使用一种语言。他们学习的语言也更多。我工作中使用java C这些『工业级』语言开发,很多代码和sql都是用python来生成的。

我也学过lisp语言,只是被他的思想所折服,但是没有用这门语言开发过项目。

现在的语言无非就是 『C语言的风格,然后慢慢增加lisp的思想』!
4 楼 houxinyou 2012-11-05  
然后再去学习掌握另外一门,逐渐的成长.
我想问下,是只有学习掌握了另一门,才能成长,还是学习另一门语言,扩大了自己的视野,达到成长的目的?
3 楼 haohao-xuexi02 2012-11-05  
coffeescript 写道
看到这个题目就想顶。

2 楼 artdialog 2012-11-05  
果断转载走。
1 楼 coffeescript 2012-11-05  
看到这个题目就想顶。

相关推荐

    高中英语 知识点大全93 one after another

    "one after another"是一个常见的英语短语,它在描述事物连续发生,特别是数量较多时非常有用。例如,当描述学生们放学后相继离开学校时,我们可以用"students went out of the school gate one after another"来...

    This will cipher the contents of one textbox into another wi

    This will cipher the contents of one textbox into another with a password that determines the string sequence.

    新概念英语第二册 one good turn deserves anotherPPT课件.pptx

    这篇PPT课件是关于《新概念英语》第二册中的"Lesson 11 One good turn deserves another"(善有善报)。课程的核心是通过故事和互动讨论来教授英语语法、词汇以及文化观念。 首先,课件中涉及了几个填空练习,测试...

    china2018_good_static_svc_pss.rar_another6mc_next7yb_svc pss_vsc

    标题中的"china2018_good_static_svc_pss.rar_another6mc_next7yb_svc pss_vsc"可能指的是一个关于2018年中国电力系统中静止无功补偿器(SVC)和虚拟同步发电机(VSC)的仿真研究。这个研究可能涉及到两个特定的设备模型...

    Another-Redis-Desktop-Manager.1.5.6

    标题中的“Another-Redis-Desktop-Manager.1.5.6”指的是Another Redis Desktop Manager的1.5.6版本。这是一款专为Redis数据库设计的桌面管理工具,它提供了直观的图形用户界面(GUI),方便用户进行数据的查看、...

    Python_Translate the video from one language to another and.zip

    在这个项目中,"Python_Translate the video from one language to another" 提供了一种解决方案,帮助用户实现这一功能。通过解压缩"pyvideotrans_main.zip",我们可以找到实现这一功能的相关代码和资源。 首先,...

    Another

    标题“Another”可能指的是一个软件工具或类库,它允许用户查看和操作其他目录中的文件。这个工具或类库可能是为了提高工作效率,特别是在处理大量文件和目录时,提供了一个便捷的方式来浏览和管理文件系统。 首先...

    libyang学习.md

    YANG(Yet Another Next Generation)是一种数据建模语言,最初被设计用于为NETCONF协议建模。它定义了一个数据层次结构,该层次结构可以用于多种目的,包括但不限于配置、状态数据、RPC(远程过程调用)和通知。...

    Another girl in the wall.exe

    Another girl in the wall.exe

    Another-Redis-Desktop-Manager.1.6.1

    《Redis桌面管理器Another-Redis-Desktop-Manager详解》 Redis,全称为Remote Dictionary Server,是一种高性能的键值存储系统,常被用作数据库、缓存和消息中间件。其简洁的数据结构和丰富的数据类型使其在分布式...

    Python Excel How to copy a style from one cell and put it on another

    Python Excel (xlrd, xlwt) - How to copy a style from one cell and put it on another - Stack Overflow

    抽人名或another的神器

    抽人名或another的神器 抽人名或another的神器 抽人名或another的神器 抽人名或another的神器 抽人名或another的神器 抽人名或another的神器 抽人名或another的神器 抽人名或another的神器 抽人名或another的神器 抽...

    Another-Redis-Desktop-Manager.1.5.5

    标题 "Another-Redis-Desktop-Manager.1.5.5" 指向的是一款名为 Another Redis Desktop Manager 的软件,其版本号为 1.5.5。这是一款图形用户界面(GUI)工具,专为管理和操作 Redis 数据库而设计。Redis 是一个开源...

    Another.Redis.zip

    Another Redis DeskTop Manager 1.2.5是这个工具的一个版本,可以从提供的压缩包"Another.Redis.Desktop.Manager.1.2.5.exe"中获取。这个软件允许开发者直观地查看和编辑Redis中的键值对,支持多种数据类型,如字符...

    With-one-another:一个不错的网络游戏

    《With-one-another》是一款基于JavaScript开发的网络游戏,它的出现为玩家提供了丰富的在线互动体验。JavaScript,作为互联网上最常用的语言之一,对于构建此类游戏至关重要。这款游戏充分利用了JavaScript的灵活性...

    yet another smooth scrolling

    标题“yet another smooth scrolling”指的是一个Firefox浏览器的扩展插件,其主要功能是提供更平滑、更流畅的页面滚动体验。在描述中提到,这个插件的目标是为Firefox用户带来类似于Opera浏览器的平滑滚动效果,...

    AnotherOneDriveDirectoryIndex

    描述 "Another OneDrive Directory Index" 表明这可能是一个替代方案或更新版本,相对于其他已存在的OneDrive目录索引工具。这可能意味着它提供了一些独特的功能、改进的性能或更好的用户体验。 标签 "PHP开发-资源...

    EXCEL AnotherSum函数

    Next cell End Function ``` 在这个例子中,AnotherSum函数只对大于0的值进行求和。你可以根据实际需求修改这个函数,比如增加其他条件、处理复杂的数据结构等。 在使用自定义函数时,确保已经启用了Excel的开发者...

    Another.Redis.Desktop.Manager.1.3.1.rar

    首先,我们关注的是“AnotherRedisDesktopManager”这个名字。这是一款专门针对Redis设计的桌面管理软件,旨在为用户提供便捷、直观的界面来管理和操作Redis实例。版本号“1.3.1”表示这是该软件的某个稳定版本,...

    Another-Redis-Desktop-Manager.1.3.8.rar

    标题中的"Another-Redis-Desktop-Manager.1.3.8.rar"指的是一个名为"Another Redis Desktop Manager"的软件的版本1.3.8的压缩文件。这是一款针对Redis数据库的桌面管理工具,用于帮助用户在Windows操作系统上更加...

Global site tag (gtag.js) - Google Analytics