我发现这个问题的本质非常适合Stack Overflow上具有实际意识的人.
我正着手用Java制作一个相当大规模的项目.我不打算详细介绍,但它将涉及数据管理,异构格式的解析,以及需要具有编辑器语义的吸引人的界面.我是一名本科生,并认为这将成为一个展示我的就业技能的好项目 - 哎呀,理想情况下,它甚至可以成为初创公司的理由.
我写信告诉你,我可能没有考虑哪些捷径,这将有助于Java中的复杂项目.当然,我打算在Eclipse中使用它,并且可能会使用SWT作为GUI.但是,我知道Java不幸的是质量过于复杂,我不想被卡住.
在你告诉我我想用Python之类的东西之前,我只想重申为什么我会选择Java:
想要以合适的性能在任何地方运行它
我对所有技术都持开放态度(最熟悉Java,perl,sql,有点功能).
编辑:目前,我正在给它djna(尽管票数很低).我认为你的所有答案在某些方面肯定是有帮助的.
我认为djna能够更好地打击我作为新手程序员需要注意的东西,认识到我没有采取捷径而是试图不要陷入困境.至于大型框架的建议,尤其是 J2EE,在这种情况下太过分了.我正在尝试提供最简单的解决方案,其中我的API可以由不是J2EE/JDBC专家的人员进行扩展.
感谢提出Apache Commons,尽管我已经知道了.仍然对SWT与Swing感到困惑,但我使用过的每个Swing程序都很难看.正如我在帖子中提到的那样,我将要关注文件交换和我必须自己实现的有限数据库功能(但是要谨慎 - 我知道并发和ACID问题).
仍然是一个社区维基需要改进.
学习/使用Spring,并创建项目,使其在没有 Spring配置的情况下运行(这些事情往往会失控),同时保留在稍后阶段配置环境参数的可能性.您还可以通过统一的方式集成其他框架,如Hibernate,Quartz,...
而且,根据我的经验,远离GUI构建者.这似乎是一个很好的协议,但我喜欢一直保持对我的代码的控制.
一个明智的构建和配置平台将帮助您一路走来,Ant:
或Maven(最好):
特别是随着项目的规模,以及项目中的模块数量的增加.
有高效地完成“项目”,也有“捷径”。我怀疑以下内容可能属于“避免浪费精力”类别,而不是真正的捷径,但如果其中任何一个能让你更快地结束,那么我也许它们会有所帮助。
1)。分解和关注点分离。您已经确定了高级块(UI、持久层、解析器等)。尽快定义提供者类的接口,并使所有依赖类针对这些接口工作。高度关注这些界面的可用性,使它们易于理解——名称很重要。即使像 setShutdownFlag(true) 和 requestShutdown() 之间的区别这样简单的事情,第二个也有明确的含义,因此我更喜欢它。
优点:更容易维护。即使在最初的开发过程中也会发生“维护”。您将想要更改已经编写的代码。通过强大的封装可以轻松实现这一点。
2)。期待迭代开发、完善和重新设计。不要指望在使用任何一个组件之前就单独“完成”它。换句话说,不要采用纯粹自下而上的方法来开发组件。当您使用它们时,您会发现更多信息,当您实现它们时,您会发现更多关于可能性的信息。
因此,可以通过模拟和存根低级别组件来开发更高级别的组件,尤其是 UI。JMock之类的东西是一条捷径。
3)。尽早测试,经常测试。使用 JUnit(或等效工具)。您已经获得了低级组件的模拟,因此您可以测试它们。
主观上,我觉得当我戴上“测试帽”时,我会写出更好的代码。
4). 预先定义您的错误处理策略。检测到错误时进行良好的诊断。
优点:更容易排除错误。
5)。继错误处理之后 - 使用诊断调试语句。将它们大量地散布在您的代码中。不要使用 System.out.println(),而是使用日志库的调试工具 - 使用 java.util.logging。交互式调试器很有用,但不是分析问题的唯一方法。