所以我会在这里说我不是专业编码员。我是一个业余爱好者。和其他人一样,我觉得我做错了。
喜欢这个问题A feeling that I'm not a good programmer如果已经开始有这种感觉了。现在我基本上知道他们说你不应该担心,即使你不断怀疑自己,你也应该好。但是,他们正在和他说话。我不喜欢他(从某种意义上来说,我更像是一个新手)...我已经作为业余爱好者编写了3年(3个业余爱好者,请注意你!),不像他说的10-11岁。
另外,我唯一可能深入阅读的是在21天内自学C ++ 。在我继续之前,为什么你不会对我在(主要是)iPhone和OpenGL上发布的各种问题感到困惑,我已经对这两件事情进行了几个月的探讨,并最终对两者都有所了解。他们。但是,从我注意到的是,我是在制作好的代码。对我而言,我甚至不讨论我是否做错了:我可以告诉我(从我创建的各种意大利面条代码和其他各种差异我和其他人可以看到并在我的代码中注明)。什么是摆脱我的这些可怕习惯并以更正确的方式做到这一点的好方法,或者如果没有“正确的方法”那么我的意思是“典型的”,方式?
答案 0 :(得分:6)
参与某种开源项目。
答案 1 :(得分:4)
看起来令人遗憾的事实是,50%的开发人员低于平均水平。实际上由于Jon Skeet因素,它更像是65%。但这并不意味着你应该放弃。 (如果每个人都这样做,那只会让酒吧更高,让更多的人对此感到沮丧。)
至少你承认你对自己不满意并想要变得更好。我认识那些编写可怕代码的人并认为这是世界上最伟大的事情。但我认为我从来没有见过一个好的开发人员,这个开发人员并没有为他6个月前编写的代码感到尴尬。这很正常,这是进步的标志。
答案 2 :(得分:1)
如果我能给你两条建议,他们就是向你自己介绍测试驱动开发,并按照你选择的语言跟踪一个与TDD相关的在线社区,其次,去了解对象的SOLID设计原则 - 面向编程。
如果你这样做,你可能会放弃你在过去几年中开发的一些spagetti代码习惯。这两个主题都非常平易近人,有大量的文献,无论是印刷版还是在线版,他们都有非常有活力的在线社区,可以为您提供帮助和建议。
干杯。
答案 3 :(得分:1)
作为业余爱好者,不要停止ENJOYing编程或阅读其他编码。你没有商业压力!
现在是时候教育自己使用面向对象编程(OOP)概念,如封装,关注点分离,解耦设计等。这些是您目前需要掌握的一些基础知识。大多数良好实践都有这些原则的基础。
答案 4 :(得分:1)
业余爱好者应该做什么: (我不是专家;我列出了我的所有想法。请纠正我,如果我错了)
需要彻底学习语言(C,C ++或Java)。我们中的许多人着迷于计算机和编程,我们开始学习和构建软件以获得乐趣。您可以在amazon.com上找到许多关于最佳实践的书。人们可以通过这一点。
学习OOP,设计模式,UML等概念。在所有这些之前,人们应该为每个答案问“为什么”。这将有助于您了解系统建模的最佳方法。许多C程序员在转移到C ++时,他们使用Class作为容器来存储所有变量和方法。那么如何创建一个类,为什么我要创建一个抽象类。所以“为什么”是有用的。
选择核心概念,如操作系统,计算机组织,计算机体系结构,算法,软件工程等。我们大多数人都只是程序员(称为“软件工程师”)。我们都知道如何编码并获得有效的解决方案。除此之外,我们大多数人对计算机一无所知。因为,许多程序员来自不同的工程流程。了解这些编程概念并开始构建应用程序并加入某公司的软件工程师。但我们(其他流)从未学过这些概念。所以需要学习这些有助于更好地理解和编码的概念。
参加会议(如Microsoft TechEd),这有助于了解即将推出的技术。
撰写关于最佳实践,您的发现,新概念,解决方案的博客。博客将像讨论书一样,访问者将在其中表达自己的观点,这将有助于您更好地理解概念。
从博客订阅RSS。这真的很有帮助。
Amazon.com。我发现amazon.com非常有助于选择正确的书来学习新概念。用户评论并检查书籍清单。
答案 5 :(得分:1)
了解如何正确编码,如何以尽可能少的代码表达自己。
忘记RAD的一切,专门使用单元测试来开发代码并遵循设计模式和最佳实践。
不要写垃圾代码,禁止自己使用copy&粘贴但创建自己的可重用类库。
然后 - GO FUNCTIONAL(认真)。
哦,如果你使用Java - 请认真切换到C#。更好的基础设施,更好的工具,更清洁的语言。
答案 6 :(得分:0)
阅读书籍/博客/网站是建立知识库的一种良好且绝对必要的方式。但是,为了摆脱编写糟糕的代码,没有什么比外面的帮助更好了。有了这个,我的意思是对编程,代码审查等等。
对于专业人士来说,这当然要容易得多,因为我们大多数人并不是他们工作场所唯一的编码人员。对于一个业余爱好者......好吧,我想唯一的方法就是找一个有兴趣与你一起开始编码项目的朋友(来自隔壁或互联网)。
相信我,您的代码的另一个视图可以极大地扩展您的自己的视图。
答案 7 :(得分:0)
我想就所说的一切警告你。
更准确地说是主流语言。 学习“主流”语言并不总是好方法。 主流我的意思是(Java,C#,C ++,PHP ...) 我并不是说那里有一个坏的,只是他们大部分时间都没有教你正确的概念。
主流语言大部分时间都是偶然采用旧概念并将其推广为新概念。
例如现在在PHP中你有封闭(实际上有lambda但是......),在C#中也是...... 关闭/ lambda是LISP的一个非常古老的概念,早在60年代。
所以请保持警惕并始终尝试真正发现所有事情都来自。这很难,但你做的越多,你的思维就会越敏锐,就像其他事情一样:)。