首页 / JAVA / Java中的基本模块化
Java中的基本模块化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中的基本模块化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2711字,纯文字阅读大概需要4分钟。
内容图文
![Java中的基本模块化](/upload/InfoBanner/zyjiaocheng/679/5cab0798ea42469293ff4dce9a6e1b88.jpg)
我是开发团队的一员,并且仍然维护着纯Java Spaghetti代码的代码库.在我加入该团队之前,大多数措施已实施.
我的背景是Python / Django开发,并且Django社区确实强调“可插入性”,这是Django“应用”(模块)的一项功能,主要意味着“一件事情一件好”,可重用性,松散耦合以及干净,有意识的API.一旦我曾经工作过的Django团队开始“获取”,对于杂乱,紧密耦合的整体代码,我们几乎没有零问题.
我们的实践涉及在我们打算使用该应用程序的Django项目之外开发Django应用程序(根据我收集的信息,这是Django开发人员的一种常见做法),每个应用程序甚至都生活在与整个Django项目不同的Git存储库中.
现在,我们有机会重构很多意大利面条代码,在我看来,我从Django社区中学到的一些知识也应在这里应用.简而言之,我希望看到我们的新代码库是由一系列“可插拔”模块开发的,每个模块都是在假设它无法访问其他模块(合理依赖的模块除外)的前提下编写的.我相信这应该为整个团队推动正确的软件设计原则奠定良好的基础.
因此,我提倡的是在我们的新(春季)项目中为每个“功能”拥有一个单独的存储库.每个都有自己的独立构建过程,结果将是.jar.我们还将有一个用于存储项目级内容(JSP,静态文件等)的存储库,其构建过程将生成一个.war. .jar不会放在.war内,而是被视为Gradle依赖项(与第三方依赖项相同).
现在我必须把它卖给老板.他被要求为此计划提供一些先例的例子.显而易见的地方应该是开源项目,但是如果一个项目分散在多个存储库中,则很可能是多个项目.因此,也许我正在寻找某种套件.以Spring本身为例,但我找不到很多其他的例子.
我的问题是(很长的故事很抱歉):
>是否有这样的先例?
>有哪些例子?
>是否有任何文档(甚至只有博客文章会有所帮助)提倡类似这样的事情?
>有什么实施建议吗?
>这是个好主意吗?
提前致谢!
编辑:是否重构不是问题.我们已经决定对我们的大多数代码进行一些重大更改,而实际上并不是为了“使其变得更整洁”.我的问题是关于我们计划的项目结构是否合理以及如何向决策者证明其合理性.
解决方法:
与将代码放置在磁盘上或工件中的位置相比,以下问题更重要:
如果您不了解,那您就已经失败了.
您所描述的不是重构,而是使用更可口的名称进行重写:
除非您已经100%的代码已包含在单元测试中;否则;当(如果不是)这项努力严重失败(可能是多次失败)时,将有人对此事开除!
即使进行了很棒的单元测试,通常在经过数月的无声破坏后,通常还是有人会错过某些东西,而有人最终会在生产中发现它时就跌倒了.
语义很重要:
根据定义,删除Struts并替换为Spring不会重构.重构将从Struts 1.1迁移到2.0,替换Struts意味着将所有Struts代码替换为其他东西,根据定义,这是重写而不是重构.
工作软件有很多伪装:
企业始终认为自己的工作正在发挥作用.
错过最后期限,无论多么微小都引入错误,无论多么微小都失去功能,错误解释一个未记录的过程,并且无论多么微小甚至更好都会进行更改.他们只是在寻找问题的弱点或潜在的麻烦来传播FUD,并确保至少在大多数情况下,您的努力是失败的.
所有这些事情将花费您和您的团队的政治资本,有人会为这些事情而屈服,无论感知到的失败有多么幼稚或无用!
预计结果:
很可能是您和/或其他“非Java”开发人员,而不是创建您“非Java”人员重构(在这种情况下为重写的代码字)并按时交付的时间不完整,不完整或没有按时交付或根本没有交付.
内容总结
以上是互联网集市为您收集整理的Java中的基本模块化全部内容,希望文章能够帮你解决Java中的基本模块化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。