- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
关闭。这个问题是opinion-based .它目前不接受答案。
想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.
7年前关闭。
Improve this question
我所在的开发团队编写并仍然维护着一个纯 Java 意大利面条代码的代码库。其中大部分是在我加入这个团队之前实现的。
我的背景是 Python/Django 开发,Django 社区非常强调“可插拔性”——Django“应用程序”(模块)的一个特性,主要意味着“一件事和一件事好”、可重用性、松散耦合和干净、有意识的 API。一旦我曾经工作过的 Django 团队开始“得到它”,我们就几乎可以零问题地处理凌乱、紧密耦合的大量单体代码。
我们的实践涉及在我们打算在其中使用该应用程序的 Django 项目之外开发 Django 应用程序(根据我收集的资料,这是 Django 开发人员的常见做法)每个人甚至都生活在与整个 Django 项目分开的 Git 存储库中。
现在,我们有机会重构大部分意大利面条代码,在我看来,我从 Django 社区学到的一些东西应该在这里应用。简而言之,我希望看到我们的新代码库开发为一系列“可插拔”模块,每个模块都是在假设它无法访问其他模块(除了它应该合理依赖的模块之外)的情况下编写的。我相信这应该很好地将正确的软件设计的基本原则推广到整个团队。
所以,我提倡的是在我们的新(Spring)项目中为每个我们想要的“功能”拥有一个单独的存储库。每个都有自己独立的构建过程,结果将是一个 .jar 。我们还有一个项目级事物(JSP、静态文件等)的存储库,它的构建过程会产生一个 .war 。 .jar 不会放在 .war 中,而是被视为 Gradle 依赖项(与第三方依赖项相同。)
现在我必须把它卖给老板。他被要求提供该计划的先例示例。显而易见的地方是开源项目,但如果一个项目被拆分为多个存储库,它很可能是多个项目。所以,也许我正在寻找某种套件。作为一个例子,Spring 本身看起来很有希望,但我找不到很多其他的。
我的问题是(对于冗长的背景故事感到抱歉):
最佳答案
以下问题比将代码放在磁盘或工件中的哪个位置更重要:
如果你不明白这一点,你就已经失败了。
您所描述的不是重构,而是使用更可口的名称进行重写:
除非你已经在单元测试中覆盖了 100% 的代码;当(而不是如果)这种努力失败时,有人会因此而被解雇,可能是多次失败!
即使有很棒的单元测试,也有人会错过一些东西,当它最终在生产中被发现时,通常会在数月的默默破坏数据之后,有人会摔倒。
语义很重要:
移除 Struts 并用 Spring 替换不是 重构 是 重写 根据定义。重构将从 Struts 1.1 转移到 2.0,替换 Struts 意味着用其他东西替换所有 Struts 代码,定义为 重写 不重构。
工作软件有多种伪装:
企业总是认为他们所拥有的东西是有效的。
错过最后期限,无论多么小都引入错误,无论多么小都会失去一个功能,误解一个未记录的流程,无论多么小甚至更好地改变一些东西。他们只是在寻找任何问题弱点或潜在的麻烦来传播 FUD,并确保您的努力是失败的,至少在大多数情况下是这样。
所有这些事情都会让你和你的团队付出政治资本,有人会为这些事情而堕落,无论感知到的失败是多么无辜或毫无值(value)!
预计结果:
最有可能的是您和/或其他“非 Java”开发人员,而不是创建这个工作系统的核心 Java 人员,您“非 Java”人员重构(在这种情况下为重写的代码字)并按时交付损坏和不完整或没有按时交货或根本没有交货。
关于java - Java中的激进模块化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23413746/
每个人(希望)都在努力实现代码模块化。我想要做的是有 1 个主要的 Sass 文件,它导入我的所有模块,这些模块是局部的,如果需要,这些局部可以调用它们自己的局部组。我想要的是,不是在我的代码库中调用
如何在 xslt 转换中模块化一组重复的输出?例如,我有如下内容(伪代码)。 并
假设我有几个简单的模型驻留在 food.py 中: import peewee as pw db = pw.SqliteDatabase('food.db') class BaseModel(pw.M
我正在开始一个新的 Angular 项目并尝试模块化我的所有代码——我厌倦了拥有大量的 app.js 文件,而且因为我正在为一家公司开发一个平台,所以我的代码整洁且模块化以便于测试、清洁和易于过渡到
所以,有人告诉我,在 nodeJS 中传递 request 和或 response 变量是“不好的做法”。但这意味着你的大部分代码都必须在 server.js 文件中,这使得它变得困惑而且有点难看。
有一个想法:函数(在 FP 中)可以以与 OOP 中的组件类似的方式组成。对于 OOP 中的组件,我们使用接口(interface)。对于函数,我们可以使用委托(delegate)。目标是实现分解、模
有没有办法将 SQL 代码模块化,使其更具可读性和可测试性? 我的 SQL 代码经常变成一长串复杂的嵌套连接、内连接等,难以编写和调试。相比之下,在像 Javascript 或 Java 这样的过程语
我想知道大公司如何倾向于在他们的页面上模块化组件。 Facebook 就是一个很好的例子: There's a team working on Search that has its own CSS,
我正在寻找在 WPF 中构建模块化应用程序模型的解决方案。目前,我使用 Devexpress POCO MVVM 来构建我的 WPF 应用程序,但缺乏模块化的可扩展性,我正在寻找适合我当前设计并允许构
我制作了一个 Gradle 项目,它使用类加载器从子目录资源/文本中加载文本文件。此时它可以工作,但是当我将项目转换为模块化 JavaFX 程序时,相同的类加载器函数会给出 NullPointerEx
假设我有一个通用类模块: export class MyCalc { data = {} ... } 并说我想扩展更多功能: export class MyCalcLoader {
我的模板文件变得越来越大并且过于复杂(大约 200 行(长)代码,9 级缩进),因此它也变得容易出错。我正在寻找一个简单的解决方案,它可以让我轻松访问 $scope 变量和函数。 我的第一个想法是使用
许多人说要将外部 CSS 和 JavaScript 文件的数量保持在最低限度以减少往返时间。例如,Google 建议每个网站最多分别使用两个 CSS 和 JavaScript 文件。 问题是,作为“模
我试图找出为什么我的 Promise 链执行无序,尽管编写了一个非嵌套的 then 链。我的函数已经模块化,以减少链中发生的代码膨胀(我期望有五个 then 方法),并且我不确定这些模块中的某些内容是
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我使用 create-react-app 创建了一个样板 React 应用程序。 现在,在我的 App.js 文件中 import classes from './App.css'; 我做到了
Java 模块系统是否应该阻止模块通过反射访问其他模块,而不声明正确的模块依赖关系? 例如,在编译这个 hello world Java 11 类时,它从另一个模块调用类,正如预期的那样,它不会编译,
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我的应用程序上有许多不同的“控制元素”:下拉菜单、选项卡、菜单等。在同一页面上,有许多相同的控件。当编写 JavaScript 来处理与每个控件关联的不同事件时,我试图使我的代码尽可能干燥。挑战之一是
处理以下场景的模块化方式是什么:应用程序具有所有标题标签(h1、h2、h3 等)的通用样式。特定组件 Widget.jsx 可以使用这些标题中的任何一个,但 h1 标签具有特殊样式。在 CSS 的“旧
我是一名优秀的程序员,十分优秀!