十个提高编码技能的诀窍,你掌握了几个?

微信公众号:javafirst

原文:10 Tips to improve your coding skills
翻译:王江平

译者注:此文主要介绍一些提高编程技巧的小方法或者说是技能,嗯,我比较推崇第一条…..多练,熟能生巧。

你想成为一名程序员,并且正在为之奋斗,那么你努力的方式,比如做事方法、思维习惯都将会影响你会成为怎样的一名程序员。 
那么,你需要成为一个天才才能学好编程吗?我觉得没有必要。 
你必须建立自己的做事方式。需要学习一些(或更多的)技巧, 不断的在Google上搜索查询,与书成为朋友。有一长串的TODO需要遵循。我将在这里分享一些技巧,帮你提高编程技能。 

尽可能多地练习:
坚持练习几个小时听起来很难, 但一旦喜欢上这种方式, 相信我, 你会乐此不疲。你一定听说过熟能生巧。这对程序员来说是非常必要的。   
这里有个问题。练习什么?问得好。社会媒体是实践资源的一个重要来源。加入有新手程序员分享他们所面临的问题的群组和论坛,去帮助他们。几乎每本书都有很多经典的案例。不要跳过章节练习。留意实际运用中的问题并且尝试解决掉。 
加入开发者社区:
如上所述,社交媒体可以给到你想要的一切。有大型专业社区。有些是非常流行的, 如 StackOverflow 和MSDN。这里有许多技术牛人可以给到你帮助,也有一些新手需要你的帮助。注册 (免费的), 然后扩大你的社交圈。 

多吸取建议 :
允许他人阅读您的代码。如果有批评的观点, 请感谢他们。因为他们将帮助您找到代码中的漏洞,提高代码质量和逻辑。对有些人来说,很难接受批评。我就是其中之一, 但很快我意识到, 评论者正帮助我测试代码。 
解决困惑和谜题:
当我还是新手的时候, 我常常解决一些编程难题,直到现在我仍然在周末寻找一些难题并享受解决之后的喜悦。它刺激大脑并保持头脑的运转。 
当同样的问题再次出现时,在哪里可以找到解决这些困惑的方法? 下面是一些资源。 

  • Sphere online judge

  • Uva online judge

  • Project Euler

  • Top coder

  • Python challenge

  • Code kata

参与代码挑战:
参与学校里面低级别的或者如Google Code Jam等国际级别的代码挑战,使您能够像专业人士一样思考。 它让你知道自己的水平,使你能够确定自己的速度。 如果您赢得了挑战,您将获得奖励,这是一种激励和鼓励,如果你输了,那就是刺激,给手机设置提醒,一个告诉你起床和奋斗的警报。 

不要重新编写代码:
如果你正在练习,那么跳过这一点。但是如果你正在开发一个项目,那么它是为你而设计的。 您正在处理的项目可能是由多人共同完成的,整个代码或代码段都是开源的。 只要借用该代码,阅读并修改它,如果需要的话。不要重新发明已经发明的东西。 这可以真正提高您的工作效率。 
不要试图记住代码:
这个帖子的第一点是尽可能的多练习。 
问:你为什么需要练习? 为什么不记住代码? 
答:一些初学者记住了代码和语法,这看起来比练习更容易和快捷,不是吗 ?但事情并不总是像#000000和#ffffff一样确定。 实际上,不需要记住特定问题或代码语法的任何代码,因为我们有存储设备和搜索引擎以便于检索。问题日益复杂,今天的代码对于明天变得无效。 所以你需要建立肌肉记忆,发展自己的想法而不仅仅是死记硬背。 
我不会试图记住之前写的代码的某一行,甚至是某一个变量,因为我真的不需要。当然,我会为我的代码添加注释,方便以后再次阅读时理解。 
避免使用过时的API:
过时的API是指那些旧的或较新版本的API。新的东西有新的功能, 对旧版本的特性和兼容性等方面得以改善。API开发人员试图使用户更容易使用。因此,让你的技能与时俱进,如果不需要使用旧版本的API,请避免使用它。 
会用调试工具:
对于所有程序员来说,调试是编码过程中最苦恼的一部分。如果某一个人写了很多行代码而没有BUG,那是比较少见的。调试是解决BUG的过程。根据bug难易程度和个人调试技能不同,调试单个bug可能需要1分钟或几天时间。但是, 您可以使用某些工具来提高调试效率。幸运的是,每个IDE都包含调试工具。您只需要学习如何使用这些工具, 并在每次调试过程中使用它。真的会对你有帮助! 
擅用Google
在开发过程中,你将不得不面对一个艰难的处境。当你在代码中发现了很多BUG的时候,或者你正在努力想出一个方法去做一些事情。在这种情况下,很可能你不会是第一个做这些事的人。 数以千计的人可能也遇到同样的麻烦。他们是如何成功解决的呢? Google会给你很多答案。所有你需要的都可以进行搜索查询。 
谷歌 (搜索引擎, 而不是谷歌公司) 只是聪明,不是智能。它适用于关键字。因此, 为了获得最佳答案,你需要知道如何以巧妙的方式向google提问。为此, 学习SEO(译者注:搜索引擎优化) 基础知识。这这将使您能够像Google一样思考,从而提高您的搜索技能。



更多资源扫一扫免费获取


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenCV小项目 这是一个个人在使用OpenCV过程中写的一些小项目,以及一些非常有用的OpenCV代码,有些代码是对某论文中的部分实现。 注意:代码是在Xcode里写的,如果要在win下测试,遇到问题自己修改。 opencv-rootsift-py 用python和OpenCV写的一个rootsift实现,其中RootSIFT部分的代码参照Implementing RootSIFT in Python and OpenCV这篇文章所写,通过这个你可以了解Three things everyone should know to improve object retrieval这篇文章中RootSIFT是怎么实现的。 sift(asift)-match-with-ransac-cpp 用C++和OpenCV写的一个图像匹配实现,里面包含了采用1NN匹配可视化、1NN匹配后经RANSAC剔除错配点可视化、1NN/2NN<0.8匹配可视化、1NN/2NN<0.8经 RANSAC剔除错配点可视化四个过程,其中1NN/2NN<0.8匹配过程是Lowe的Raw feature match,具体可以阅读Lowe的Distinctive image features from scale-invariant keypoints这篇文章。这个对图像检索重排非常有用。另外里面还有用OpenCV写的ASIFT,这部分来源于OPENCV ASIFT C++ IMPLEMENTATION,ASIFT还可以到官网页面下载,ASIFT提取的关键点 比SIFT要多得多,速度非常慢,不推荐在对要求实时性的应用中使用。 更多详细的分析可以阅读博文SIFT(ASIFT) Matching with RANSAC。 有用链接 OpenCV3.0文档 // 测试sparse unsigned int centersNum = 10; vector descrNums; descrNums.push_back(8); descrNums.push_back(12); //unsigned int T[] = {1, 2, 1, 3, 2, 5, 4, 3, 10, 5; 4, 2, 6, 5, 2, 5, 4, 6, 2, 4}; unsigned int T[] = {1, 2, 1, 3, 2, 5, 4, 3, 10, 5, 4, 2, 6, 5, 2, 5, 4, 6, 2, 4}; sp_mat Hist(descrNums.size(), centersNum); static long int count = 0; for (int i = 0; i < descrNums.size(); i++){ unsigned int* desrcElementsTmp = new unsigned int[descrNums[i]]; memcpy(desrcElementsTmp, T + count, descrNums[i] * sizeof(T[0])); //cout << desrcElementsTmp[0] << '\t' << desrcElementsTmp[1] << '\t' << desrcElementsTmp[2] << '\t' << desrcElementsTmp[3] << '\t' << desrcElementsTmp[4] << '\t' <<endl; //cout << desrcElementsTmp[5] << '\t' << desrcElementsTmp[6] << '\t' << desrcElementsTmp[7] << '\t' << desrcElementsTmp[8] << '\t' << desrcElementsTmp[9] << '\t' << desrcElementsTmp[10] << '\t' <<endl; //cout << endl; sp_mat X(1, centersNum); X.zeros(); for (int j = 0; j < descrNums[i]; j++){ X(0, desrcElementsTmp[j]-1) += 1; } X.print("X:"); X = X/norm(X, 2); Hist.row(i) = X; count = count + descrNums[i]; delete desrcElementsTmp; } //Hist.print("Hist:");

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值