我喜欢编程语言并试图想出问题的逻辑解决方案。很多我一直在阅读C#和WPF的工作。 (还有Python和PyQt)在我所有的大学编程课程中,我什么都不学习(变量是什么,数组是什么,不是什么堆栈和堆,不是CLR / JVM实际上做的)我觉得我有一个非常掌握基础知识,掌握更实质性的主题。
我一直在尝试制作自己的C#/ WPF应用程序,该应用程序由输入传感器和输出继电器控制,用于家庭/商店自动化。
我无法做某些事情。例如。使用户控件由中央控件使用,该控件在具有数据库层时也控制另一个用户控件。
我真的想学习如何构建逻辑程序和最佳设计(例如,我讨厌用if / else语句填充程序)。问题是,我发现的书只有基本的例子,并没有真正加深我对所有部分需要如何协同工作的总体看法。
答案 0 :(得分:5)
我该如何开始做事?
你发现一个开源(或者至少是“免费提供的资源” - 不完全相同的东西,但差异应该只在你计划重新分配你的结果时才有意义)项目“做类似”(也许“模糊地”喜欢;-)你想要做什么,并用你知道或想要学习的语言编码。
您将该项目的源代码树复制到您的计算机,并将副本放在版本控制系统(svn
,hg
,git
,bazaar
下 - 无论如何 - 它有一个非常好的,免费的 - 与它最初可能存在的任何VCS完全无关 - 重点是能够一直保存你的编辑,并在你犯错误时轻松还原它们。
然后你开始黑客攻击,在文档和论坛中查找内容,根据需要询问SO等等; - )。
答案 1 :(得分:0)
编程世界中没有“一刀切”的解决方案。但我确实推荐你一本书。希望你喜欢它。
首先设计模式 (O'Reilly)的
答案 2 :(得分:0)
老实说......真的......最好的答案?做的事。
我在学校学到了很多东西。吨。但正如你所说,有一个学校不接触的水平。在我2个月的编程/数据分析师中,我对两年内获得AA编程的能力有了更深入的了解。
意识到一件事:学校可以教你各种各样的东西 - 达到最低水平。你不会单独从学校成为专家(有例外......和任何规则一样)。
我是如何真正开始理解的?编程。老板给了我一个程序任务,然后我跑了。
就个人而言,我真的很喜欢Apress书籍。 C#2008 Illustrated(或即将发布的2010年)对我来说非常宝贵。我实际上阅读了95%的书,双重检查的例子......最重要的是......在我可怕的第一个编程任务中将它们付诸实践。我已经重新考虑了至少5次,并且已经看到了让我再次这样做的事情。
我不知道你是否有工作...或业余爱好......你想要帮助的开源程序......或者你想要自动化的任务。选择一些东西,从内到外学习,然后编程。
就我个人而言......我说加入一个已经开始运行的开源项目太多了。我试过几次,这对我来说太过分了。对于很多我不理解的事情。我计划再次尝试一下,但是当我自己几乎不能运球时,我不打算在NBA球场上闲逛...如果你知道我的意思。
答案 3 :(得分:0)
我该如何开始做事?
找到需要解决和编写程序的问题。它不需要漂亮或高效。该计划只需要工作。当您使用该程序时,您将开始学习更好的技巧来完成您为自己设置的任务。 Google和SO将成为您的朋友并帮助您学习更好的技巧。
正如其他人所说,直接用C#控制硬件对你的第一个程序来说可能不是一个简单的任务。
祝你好运。答案 4 :(得分:0)
阅读Martin Fowler的书“重构:改进现有代码的设计”。
Martin Fowler通过向您介绍您可能或可能不知道您正在制作的所有低级决策,为您提供了思考高级设计决策的基石。他还对代码味道的概念做了很好的介绍。
看看设计原则,如DRY不要重复自己,KISS保持简单愚蠢,并保持一致(Pet Peeve)。 更多设计原则在这里 Design Principles 强>
尽可能经常地练习这些原则,尤其是在课程作业和外部项目中。
参与开源
很难做,但可能会帮助你最多,特别是当与前两个结合使用时。
个人经历随时可以跳过。
经过三年艰苦的本科生后,我意识到我可以解决一些非常复杂的证据,但除了意大利面条代码我不知道怎么写。我拥有的最长的项目是5个月,这足以让我真正赶上我。在前2-3个月,我的工作效率非常高,但是从第4个月开始就从代码债务中爬出来了。此时我对你做了同样的认识。
每个人都说最好的学习方法是练习,但我不知道如何练习。 我意识到考虑设计的问题是我无法将一个设计转移到另一个设计中。一位教授提到了Martin Fowler的书“重构:改进现有规范的设计”,这一点已经完全不同了。