我读过Head First Java,我理解OOP是如何工作的.这是我的问题:我是一名PHP程序员,虽然我在PHP中使用了OOP,但我很难弄清楚应该是什么对象以及提供它的方法.
例如,假设我有一个允许人们登录和编辑文档的应用程序.如果只有一个实例,为什么文档应该是一个对象?我应该将deleteDocument()方法提供给文档对象还是管理对象?该文档是被删除的文档,但管理员是执行该操作的文档.
所以我真正的问题是,来自程序背景,我如何弄清楚应该是什么对象以及应该有什么方法?
我开始研究一个相当复杂的软件.这是一个个人项目,但我仍然付出了很多努力.现在,我习惯于处理其他人的解决方案/设计或者以非常可控的方式发展的项目.
这一次,我开始两次编写基础知识,我很快发现自己陷入困境.所以我休息了一下,决定在编写单行之前写下完整的解决方案.我所做的(按顺序)是:
现在,我整个部分都会变得很慢.我已经建立了一个个人维基,我用它来编写这些规范,但我清楚地感觉到我缺乏经验和明确的方法论.
我知道软件设计是一个非常复杂的主题,并且已经写了很多关于它的书籍,但我希望你能分享你的经验/建议/方法.
在处理个人中型项目时,您在开始编码之前指定了什么?怎么样?
提前致谢
当我从头开始编写代码时,我养成了在一个函数中快速编写所有内容的坏习惯,整个时间都在考虑"我将在以后更加模块化".然后,当后来出现时,我有一个工作产品,任何修复它的尝试都意味着创建功能,并且必须弄清楚我需要通过什么.
它变得最糟糕,因为当你的项目几乎完成时重新设计类变得非常困难.例如,我通常在开始编写代码之前做一些规划,然后当我的项目完成时,我意识到我可以使类更加模块化和/或我可以使用继承.基本上,我认为我没有做足够的计划,而且我不会获得超过一个级别的抽象.
所以最后,我坚持使用一个具有大型主函数,一个类和一些辅助函数的程序.不用说,它不是非常可重复使用的.
有没有人有同样的问题,有任何提示可以克服这个问题?我想到的一件事是用pseduocode编写main函数(没有太多细节,但足以看到他们需要什么对象和函数).本质上是一种自上而下的方法.
这是一个好主意吗?还有其他建议吗?
假设你想写一个俄罗斯方块克隆,你刚开始计划.
你如何决定什么应该是一个班级?您是将单个块设为类还是仅使用不同的块类型?
我问这个是因为我经常发现自己编写的课程太多,或者写的课程太少.