微信号:we21cto

介绍:21CTO(21CTO.com)是中国项级技术专家的学习与服务平台.我们为CTO、技术总监、架构师等技术专家提供高质量的资讯、问答、活动等产品,同时与企业连接,提供技术咨询、研发、运维、技术支持、培训及人才招聘等服...

编程初学开发者的十大误区

2018-04-12 22:31 洛逸

21CTO导读:本文介绍了初学者学习编程时的心态和实践方法,对新手有用,对形成一些路径依赖的老手同样有价值。



如果你刚刚开始编码之旅,那么可能需要你很用心用力的努力,每个人都从初学者时经历过,那是一段较长的艰难时期。


编程并不容易,初学者会常常犯错误。也就是今天我列出初学程序员常犯的十个错误。通过了解这些内容,可以更好的提高我们编程的水平。


为了能够真正帮到读者,我们先来看错误和可能的解决方案。


在我作为初学者的经历(我仍然认为自己是个初学者)中,看到了一些不断重复的模式和经常遇到的挫折。


当你阅读完这些清单列表后,相信可以轻松的决定哪些错误需要关注并一一解决它。


1、你的态度



我们是人类,心理其实很脆弱。我们还常常高估我们的能力与才学。


几乎所有人都经历这个时期。编码在一开始时都挺有趣,这时候我们能有很多资源来搞定它。


这确实是一个令人愉快的开头,似乎好多事并没有那么多挑战。加上互联网的很多资源,对初学者来说很友善,前面编程都非常愉快,这会让人产生飘飘然,似乎自己是全能一样。


这种态度会让我们在学习中放缓脚步。要想摆脱这种思维,你应该探索更多有挑战的事情。你可以做的第一件事是在GitHub上搜索复杂的项目,你会发现要建立一个像样的项目需要多少努力和知识。


与同龄人交流他们的经历,可以帮助你了解程序员成长要经历的学习曲线。


当你开始编程之旅时,我并不反对“感觉良好”,但是:“勿以浮沙筑平台”——坚持脚踏实地的学习任何知识,尤其是编程,这是最佳的打开方式。


2、怀疑 - 我能做到吗?


以“知道所有的态度”为出发点,这是初学者放慢学习过程的另一个原因。


这一次初学者的杀手是“怀疑”。


编程从来都不容易,如果再加上怀疑可能会另一个极端。这可能会让你很快的下结论,自己不适合编程。


做什么行业都会遇到困难,只有勇气才能解决问题。计算机科学技术更是解决问题的领域,如果你开始怀疑自己,那你怎么能够解决计算机的问题。


这类似于帮助别人,去爱,去帮助我们需要帮助和自己爱的人。


克服怀疑综合症是的最好方法是获得社区的帮助,寻找与你同级别的朋友。还可以去看励志电影,做有信仰的人。


请永远记住,失败永远是成功的第一步。


3、不一致的代码写作风格 


对于初学者来说,编码不一致的情况很常见。我们应该从一开始就要强制自己写结构良好的代码,比如适当的代码缩进,比如用于变量名的CamelCase驼峰规则,适当的备注等。


初学者同学会随时的用小写或大写变量名,整个代码看起来会很混乱。一致性的代码风格概念非常重要,也对其它同事查看代码会更清晰方便。


经验表明,一致性可以提高生产力,建议你使用IDE进行编码,确保变量名在声明后,使用时自动提示一致。


请永远记住,我们是为其他人编码,而不是给机器。运维工程师或其他工程师会读你在工作中的每一段代码,一致性会帮助到大家。


4、更大更好的函数?- 并不是



复杂性让我们相信我们聪明,与别人与众不同。根据Einstien的说法,复杂性对许多人来说非常有益,但找到简单的方法总是更好。


初学者往往对一个功能写出数百行的代码。如果功能很大,就会很难调试和维护,如果出现Bug,会出现整夜寻找修复错误的故事。


解决方案是,我们把它分解成小且易读的函数。没有一个人喜欢复杂,如果代码可读性良好,你会发现代码调试起来会更容易。还有一个非常神秘的故事,第一次编译都不会出错。


一个很好的例子是“用自然语言写程序”。在这种情况下,英语能力就非常需要了。如果我用写英文来写文章,不将内容分成段落,那么阅读和理解就会非常困难。


简单永远胜过复杂,它让我们更好的编写易于维护和调试的程序代码。


5、不好的函数和变量名 - 我们是为人类而编码



随着讨论函数,我们很自然的遵循同样的思路。函数非常有用,它用来创建一个逻辑块,然后用来复用来创建可用的应用程序。


如果函数的名字起得更有意义,看起来会更棒,感觉更好。


如下代码:


DoesXThing() {}


do_something()


}


这个函数名是告诉自己和未来维护的人,这个函数用来做什么的。当然,这并不需要你写一个长达100个字的函数名。


比如,使用ToCalculateTheMeanOfTheSumOfEpicNumbers() 这样的名字是没有用的。它会让其他维护的人和你一样困惑。


一个更适合的函数名称是MeanSum()。


现在,我们遇到了关于变量名的思索。变量名和函数名与你正在使用的编程语言有关,还有一些语言不允许使用下划线或数字开始作为变量或函数名称。


另一方面,为了提高可读性,起一个简短的变量名称,通过名称给阅读者提供尽可能多的信息。


最近,我一直活跃在HackerRank来解决一些简单问题。以下是我的一些代码,是用来解决服务通道问题而写的。


//calulating the largest vechile

def find_vehicle(entrypoint,exitpoint):

    the_final_array = arr[entrypoint:exitpoint+1]

    the_largest = 3

    for each in the_final_array:

        if each < the_largest:

            the_largest = each

    return the_largest

    

//taking input

length, testcases = input().split()

length, testcases = int(length), int(testcases)


arr = list(map(int,input().split()))


for i in range(0,testcases):

    entrypoint, exitpoint = input().split()

    entrypoint, exitpoint = int(entrypoint), int(exitpoint)

    res = find_vehicle(entrypoint, exitpoint)

    print (res)nd_vehicle(entrypoint, exitpoint)

print (res)


如果你能阅读出问题,并且知道如何解决问题的,那么很多想法都会自然而然地提供给你,这便是良好代码的写法。(也欢迎各位点评更多好代码的建议)


6、注释与过度注释



像硬币总有两面一样,对于我们日常生活中遇到的许多想法、概念或行为来说,都是如此。


注释如果写得好,对于自己和看代码的同学都是非常有益的。但是还有两号人不这样对待自己写的代码。


第一种是根本不写注释,另一种写注释,但一写就写大坨。


这两个类型都挺糟糕,需要做个补充。代码注释可以有效快速理解,以自然语言的方式将信息传递给读者。另一方面,太多的注释,可能会变得不必要的复杂。


在注释中轻微的用一些幽默段子是可行的,但是不建议你写一篇小作文(除非特别特别需要)


7、半瓶水的知识


初学者们往往无法全部利用编程语言的力量。编程语言几乎都配备了全部的工具和技术,初学者每天至少学习一个新概念,将对你驾驭编程语言更富有成效。


另外,掌握一门编程语言需要一段时间,需要长时间坚持用一门编程语言会更有效果。其实最重要的是,开发一个有价值的好项目可以帮助你获得编程语言更完整的知识。


8、记住备份


一个朋友最近来我家,问我如何恢复丢失的数据。诚然,有一些方法可以恢复丢失的工作,但大多没有备份方面的支持。


电脑会出现故障,硬盘会损坏,我们工作时也可能误操作。确保我们保持安全工作的最佳方式是:定期备份(两天一备份或使用GitHub)。


比如我们使用DropBox或者其它云盘,我们随时可以拖放上传到云端,随时保存工作成果。


9、不用纸和笔


我是笔和纸的踏实粉丝。这是我20年来一直坚持使用的工作,它让我的大脑工作得更好。


使用笔和纸的真正优点是,让你在编码之前先思考如何解决问题。


很多的初学者在不了解细节的情况下就开始编码。那将是一场灾难,他们将非常容易损失时间和金钱,且没有任何重大的进展。


持续进行规划是真正的关键。在你在编辑器写代码之前,应该牢记如下基本事项:


1)理解问题需求和时限


第一个关键步骤是理解手头的问题。输入是什么,什么格式?期望什么样的输出?这个工作计划的时间限制是什么?这些问题需要在我们前进前解决掉。


2)数据结构的挑战


接下来,为你的问题选出一个最佳的数据结构。我现在的技术栈能够解决问题,或者更好的解决方案吗?我们要尝试从解决方案中寻找最佳的数据结构,这对解决方案的性能至关重要。


3)思考任何角度的测试用例


代码测试与代码编写同样重要。可以画一张思维导图或写出你能想到不同角度的测试用例列表。


4)思考自己代码的粗略工作草案


这种情况适合于我自己。我写得不是最优的代码,但它已经可以工作,并与解决方案非常接近。


5)将问题分解成小块可解决的问题


对于许多程序员来说,简单的小问题在头脑中就能完成。但是对于现实世界的问题则不一样了,需要彻底的计划。


现在,我们启动编辑器开始编码。



10、IDE或调试工具使用不当



调试也是编程的一个重要部分。它可以用手动完成或使用工具完成,工具会提供程序执行时出现无法使用的错误和其它重要信息。


使用调试工具或集成开发环境(IDE)可以改善我们编码和调试的效率,提高生产力的背后,是你和家人的满意。


小结


编程是一个帮助人们提高创意的有益工作。


但是大多数情况下,它会让不少人产生沮丧与失望的情绪。人人可能都经历过“我不是个做程序员的料”的想法,但如果你坚持下去,一步步的成功一定会给你充分且满意的回报。


今天,我们一起经历了初学者程序员会犯的十个错误。但是它并不完整,权当我抛砖引玉,希望各位同好分享你自己的好经验。


当我的一些朋友来问我,如何避免犯下这些常见错误时,我决定写下这篇文章。初学者最容易陷入这样的思维陷阱:他们往往认为自己正朝着正确的方向前进,浪费着大量时间来写烂代码和养成不良的编码习惯。


初学者以各种各样的方式来体验编程世界,很快的犯错是好事。快速的犯错可以在更短的时间内纠错,在提高工作效率的同时,它会使你成为一个更优秀的程序员。


最后,你认为本文写得是不是完整?欢迎在本文评论让大家知道。如果你觉得有价值,千万不要忘了与你的朋友一起分享。


分享爱。



作者:NITISH SINGH

编译:洛逸

来源:http://www.techaltair.com/10-mistakes-beginner-programmer-makes/


 
21CTO 更多文章 Gartner:2018年前沿技术预测 分布式系统中常见技术解决的问题是什么? 一个老程序员的忠告:不要一辈子靠技术生存 码农岗简历石沉大海?让Twitter HR来给你把把脉 TIOBE 4 月排行榜:SQL 进入前十,Python 继续攀升
猜您喜欢 实践 GitHub Flow 分布式搜索引擎设计 【专家专栏】姜嫒姝 | 体验评测之用户满意度模型 沁原2018新春寄语:不恋过去,不畏将来 Storyboard简介