自学该如何提高编程能力

helloworld7864 2017-03-03 01:26:42
各位大神好!
小弟自学编程几个月了(C#.NET),有些编程基础,自己可以写一些小的算法,或者解决一些相对简单的问题。
但是,在遇到一些比较复杂或相对规模较大的问题的时候,总是不能很好的定义类型,算法结构也很混乱。经常写了一半,发现原来定义的类型有问题,或者参数或者方法有问题,或者定义的类或方法不能满足需要。
所以想请教一下:如何根据实际的问题,将问题模块化,并且很好的将各个部分组织起来?应该从哪些方面继续学习,或者推荐一些相关的书籍。

谢谢各位!
...全文
706 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloworld7864 2017-03-06
  • 打赏
  • 举报
回复
引用 10 楼 daixf_csdn 的回复:
1、有想法有架构的编码,这个想法是好的 2、架构能力不能研究和分析出来的,而是练习,试错出来的。一种方式是对还是错,是好还是坏,要去试了才能有真正体会 3、即使是这么多年开发下来,我现在反而越来越感觉到,先架构再编码,往往最后的架构也并不是你最初规划的架构。而在开发中快速迭代,是一种更好的方式 以上要点,换一句话说,就是:先去写,写的过程中,不断改。不要觉得说这种方式效率低,其实它的效率反而高,因为它在任何一个时刻,得到的都是当前最优的代码。优秀的代码,才有不断的自我重构和发展的能力。如果是错误的架构和设计导致产生了一堆垃圾代码,当代码量增长几个月之后估计就没人愿意去维护它了。
谢谢回答!其实 现在的状态就是已经写好了, 然后感觉 各个方面都不优美,效率也低,想改得好一点,前后反复改,总是感觉写得不合适。
helloworld7864 2017-03-06
  • 打赏
  • 举报
回复
引用 9 楼 wanghui0380 的回复:
其实这是一个过程 整个过程就像围棋选手,大国手都是经过常年累月的,不停的复盘,不停的判研才能形成强大的场合计算能力 而围棋里一个重要的手段就是“手割“,研究盘面结构一样,次序不一样带来的优势不一样 你说你现在差”在程序的运行过程中,变量的交互,类型的划分“,其实就是这方面的东西”次序“,先写什么,后写什么?保留那块做抽象,去掉哪块的可以根据场合而决定的”细节“ 当然我们说了,这个需要经过常年的锻炼才能达到,我很难相信一个没有经过项目经历的人单凭几本书就能学会,因为这些东西实际取决与你能看到”几步“,并且每一步带来的影响。你能看到5步以后,自然你就会选择这5步内相对比较好的写法,如果你现在只能看到1步,自然你也就只能做出目前这1步你能看到的比较好的写法
谢谢您的回答,我去看看您推荐的那本书。谢谢!
wanghui0380 2017-03-05
  • 打赏
  • 举报
回复
其实你陷入到一个误区了,你看别人的代码总是结构清晰,调用明确的 其实实际情况不是这样的,实际情况是别人的代码也先写一个抽象的粗框架,然后再实现细节的时候,那里少了就加那里,哪里多了就减哪里,结果当然是优美的,不过过程嘛就不一定了,过程也是不停的“推上,推下,来回休整”,这个过程叫“重构” 看看vs自己的Ctrl+K+M,看看vs的插件coderush,reshaper,就明白了。 Ctrl+K+M----------生成代码。why?你按直觉写,没有这个参数,好!Ctrl+K+M生成一个 写完了,认为不好,ok,resharper工具“推上推下”调整细节。 so,如果你非要优美,可以先看看《重构-改善既有代码设计》这本书
helloworld7864 2017-03-05
  • 打赏
  • 举报
回复
引用 6 楼 wanghui0380 的回复:
现在国内很多大牛其实在学校的时候,玩的是lisp,matlab,这些东西就是以数学建模为基础的东西,毕竟理科学生的强大能力就是数学体系 ps:对于学生,我依然建议使用你学校能接触的,你天天打交道的东西来玩。matlab是强大的东西,lisp的高阶函数思维体系也是强大的东西,R语言的统计分析也强大无比(matlab也能玩统计,不过matlab过于强大,就学习而言反而不如R直白),这样学你可以边接受高等数学,统计学,离散数学,运筹学,一边使用那些工具去推演,演练,认证你学的东西,这样的学法学下去,你绝对也是大牛的种子
谢谢您有价值的回答,我觉得数学建模主要是把实际问题和数学模型联系起来,哪种数学模型比较适合当前的问题,之前学习过数学建模。我现在的问题是如何用编程的方法把模型实现出来,在程序的运行过程中,变量的交互,类型的划分,等等问题。
圣殿骑士18 2017-03-05
  • 打赏
  • 举报
回复
1、有想法有架构的编码,这个想法是好的 2、架构能力不能研究和分析出来的,而是练习,试错出来的。一种方式是对还是错,是好还是坏,要去试了才能有真正体会 3、即使是这么多年开发下来,我现在反而越来越感觉到,先架构再编码,往往最后的架构也并不是你最初规划的架构。而在开发中快速迭代,是一种更好的方式 以上要点,换一句话说,就是:先去写,写的过程中,不断改。不要觉得说这种方式效率低,其实它的效率反而高,因为它在任何一个时刻,得到的都是当前最优的代码。优秀的代码,才有不断的自我重构和发展的能力。如果是错误的架构和设计导致产生了一堆垃圾代码,当代码量增长几个月之后估计就没人愿意去维护它了。
wanghui0380 2017-03-05
  • 打赏
  • 举报
回复
其实这是一个过程 整个过程就像围棋选手,大国手都是经过常年累月的,不停的复盘,不停的判研才能形成强大的场合计算能力 而围棋里一个重要的手段就是“手割“,研究盘面结构一样,次序不一样带来的优势不一样 你说你现在差”在程序的运行过程中,变量的交互,类型的划分“,其实就是这方面的东西”次序“,先写什么,后写什么?保留那块做抽象,去掉哪块的可以根据场合而决定的”细节“ 当然我们说了,这个需要经过常年的锻炼才能达到,我很难相信一个没有经过项目经历的人单凭几本书就能学会,因为这些东西实际取决与你能看到”几步“,并且每一步带来的影响。你能看到5步以后,自然你就会选择这5步内相对比较好的写法,如果你现在只能看到1步,自然你也就只能做出目前这1步你能看到的比较好的写法
wanghui0380 2017-03-03
  • 打赏
  • 举报
回复
现在国内很多大牛其实在学校的时候,玩的是lisp,matlab,这些东西就是以数学建模为基础的东西,毕竟理科学生的强大能力就是数学体系 ps:对于学生,我依然建议使用你学校能接触的,你天天打交道的东西来玩。matlab是强大的东西,lisp的高阶函数思维体系也是强大的东西,R语言的统计分析也强大无比(matlab也能玩统计,不过matlab过于强大,就学习而言反而不如R直白),这样学你可以边接受高等数学,统计学,离散数学,运筹学,一边使用那些工具去推演,演练,认证你学的东西,这样的学法学下去,你绝对也是大牛的种子
wanghui0380 2017-03-03
  • 打赏
  • 举报
回复
引用 4 楼 helloworld7864 的回复:
[quote=引用 3 楼 MrMicrosoft 的回复:] 归根结底,还是跟着做项目做实际,不管是公司里还是网上看源码
我还是个学生,刚去图书馆泡了泡,感觉可能是面向对象建模和分析这块的问题! 因为总是感觉所有的东西都要声明个类,哪怕一个方法也要单独弄个类,可能是不是对类和对象界定不清[/quote] 还是那句话,不要者急去接触东西,面向对象建模和分析是给3年以上的人准备的,即使是3年以上的人也不是100%都能顺利转型成功,而且就算能成功转型通常也需要2年时间,所以这就是上面那个工资划分行规的道理。 如果你一定要学建模,不如从数学建模开始,毕竟你是学生。对象建模这种基于经验,哲学观,工程学方法论的玩意离你太远。而数学建模离你就比较近,而且能把数学建模搞厉害的人,未来可比一般人程序员更NX
helloworld7864 2017-03-03
  • 打赏
  • 举报
回复
引用 3 楼 MrMicrosoft 的回复:
归根结底,还是跟着做项目做实际,不管是公司里还是网上看源码
我还是个学生,刚去图书馆泡了泡,感觉可能是面向对象建模和分析这块的问题! 因为总是感觉所有的东西都要声明个类,哪怕一个方法也要单独弄个类,可能是不是对类和对象界定不清
  • 打赏
  • 举报
回复
归根结底,还是跟着做项目做实际,不管是公司里还是网上看源码
wanghui0380 2017-03-03
  • 打赏
  • 举报
回复
很真正常,这个阶段就只有“多练多总结” 传统师徒关系,徒弟都得给师傅,打3年的下手,师傅才会正是教授技术,原因有很多,不过最重要的就是那3年其实就是让徒弟自己练习自总结,总结好了后面在提点一下就可以迅速上手(这也是俺们这行工资划分的不成文的行规,1-3年是一个工资档,3-5年是个工资档,5年以上是个工资档) 所以刚开始不用太着急,每天进步一点就可以。 其实你现在这个阶段我个人都不太想给你指上面路。因为如果说我去看看OOAD的书,去看设计模式这类的你反而容易走偏。 可能离你最近的东西,只是重构,只是代码大全
Forty2 2017-03-03
  • 打赏
  • 举报
回复
这个跟写文章一样,需要长期练习和修改的。你碰到的问题,资深的程序员同样会碰到。 重要的并不是现在写出’完美‘代码,而是如何从从当前的’错误‘中学习,从阅读别人的代码中学习,从经验中提升解决问题的能力。

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧