我学习编程时间也不短了,从 c 语言入门到现在已经两点多了吧。中间学过 Python , Java , Scala 。现在学习以 Java 为主。但是对面向对象还是不能有很好的理解。
例如,我需要完成一个任务,任务是: 将一个文件夹下的所有的 xlsx excel 文件转到 oracle 数据库中。 Java 中的 POI 包可以操作 excel 。 poi 里面有一个 workbook 类。可以操作 sheet , row , cell 等。我觉着抽象程度已经很高了。
在这个任务中,我还需要继续将 excel reader 这个任务继续抽象吗?如果继续抽象改完成什么样的功能设计呢?
虚心求教各位程序员大哥,希望能帮我解答一下疑惑。
另外,除了多写程序以外,还有什么书,网站,能够提高这方面的能力有帮助呢?
|  |      1pyufftj      2016-07-24 19:52:17 +08:00 如果你接触一些比较大型的项目就会发现面向对象的优点,对于代码的修改及功能的扩展都要方便的很多。如果你用过程化的方式,就很容易乱作一团。。纯属个人见解。一些简单的任务,面向对象或者过程化是看不出来的。 | 
|  |      2HypoChen      2016-07-24 20:49:17 +08:00 首先,你需要一个对象(大雾 说正经的,对于设计方面的提高就算是看书什么的也是很难提高的,之前写的代码少,在看设计模式的时候,只知道他好并不知道为啥好,在什么时候能发挥最大的威力。软件设计也是一样,看书啊什么的不建立在大量实践的基础上是很难真正消化的。当你遇到过并实现很多场景,然后再去看那些美妙的设计,会让你有众里寻他千百度的感觉。 所以,现在要做的不是在纠结怎么设计,而是放手去实践吧。 | 
|  |      3tracymcladdy      2016-07-24 21:02:05 +08:00 面向对象就是个忽悠。 面向接口编程才是正解。 | 
|  |      4wizardforcel      2016-07-24 21:19:59 +08:00 via Android 思想和架构类的书。编程之美、编程珠玑、架构之美、开源软件架构。 另外对于你那个问题, poi 是读取通用 excel 的,但如果有业务上专用格式的 excel ,还可以继续封装。 | 
|      5cs419      2016-07-24 21:52:27 +08:00 | 
|  |      6jatesun      2016-07-24 22:11:20 +08:00 via iPhone 多敲代码多看书多看源码。。。 | 
|  |      7Srar      2016-07-25 02:37:09 +08:00  1 多重构 | 
|  |      8linux40      2016-07-25 06:53:03 +08:00 via Android uml ? | 
|  |      12hujianxin OP @wizardforcel 多谢推荐 | 
|  |      13russj      2016-07-25 08:56:15 +08:00 这个是用来忽悠老板的 | 
|  |      14cxh116      2016-07-25 09:09:39 +08:00 via Android  1 先写测试,这样写出的方法会考虑怎么供调用方使用才好。 | 
|  |      15zeroten      2016-07-25 09:10:42 +08:00 首先要有个对象 | 
|  |      16gdzdb      2016-07-25 10:18:10 +08:00 多做项目, 在开发中发现问题,自己尝试解决方案,在方案中再找到问题,再优化,形成总结。 看优秀的开源项目的代码,理解代码。 然后再找本关于设计模式的书看看。 | 
|  |      17eurry      2016-07-25 10:45:01 +08:00 不要迷信什么面向对象 | 
|      18nonesuccess      2016-07-25 10:49:45 +08:00 你的代码里面有重复的部分吗?作为一个有良好习惯的程序员,粘贴代码这样的毛病就当你没有了,那你程序思路上有重复的部分吗? 比如你的 xlsx 格式有若干种,如果你的考虑问题的思路是: 1 、将 xlsx1 中的数据, xx 列复制给表 1 中的 xx 列, xx 列复制给表 1 中的 xx 列, 2 、将 xlsx2 中的数据, xx 列复制给表 2 中的 xx 列……那就没什么重复的部分,就当搬砖继续干去吧。 但是如果你的思路转变为:将每个 xlsx 中的若干列以一定的规则复制到某张表中,那所有的转换逻辑都是重复的部分。你需要封装一个 Strategy 对象,用于表示 xlsx 和数据库表的对应规则,以及列的转换规则,然后外层调用的时候统一代码,不同的 xlsx 只需要传入不同的 strategy 就可以了。 第二就是,你的代码将要应对什么样的变化。 比如明天就可能把 oracle 换成 mysql 了,那就要封装一个 dbDriver 出来。当然这件事 jdbc 已经帮你做了,不过具体到你的业务场景中,很可能不同的数据库有不同的转换逻辑,比如日期类型的字段在 mysql 中要转换为 date ,在 oracle 中要转换成 datetime 之类的。这样的话,你再自己封装一层比较好。 | 
|  |      19techmoe      2016-07-25 11:52:12 +08:00 via Android 首先你要有对象() | 
|      21goubenger      2016-07-25 12:17:30 +08:00 面向对象设计通过面向工资工作提高 | 
|      22neurobot      2016-07-25 13:51:13 +08:00 可以看一下<<Thinking in UML>>,不算太老,非常有启发 | 
|      23likai      2016-07-25 14:33:54 +08:00 面向组件编程 | 
|  |      24Raku      2016-07-25 17:58:34 +08:00 via iPhone @tracymcladdy 同意~ | 
|  |      25everettjf      2016-07-26 00:16:33 +08:00 | 
|      26Balthild      2016-07-26 02:42:56 +08:00 via Android @pyufftj 太弱了,用 while (1) 可以每天 new 几乎是无限个,一直 new 到内存受不了为止 | 
|      27sampeng      2016-07-26 11:34:00 +08:00 首先要有一个对象 | 
|      28sampeng      2016-07-26 11:35:23 +08:00 多写比多看书强无数倍。 把自己写的代码拆无数次,一直到优雅,扩展方便,理解方便。。自然水到渠成。 光看书?面试用用可以,实践差的不是一点半点 |