标签: code-organization

拥有一个大型实用程序文件是顽皮的吗?

在我的C项目中,我有一个很大的utils.c文件.它真的充满了各种各样的实用工具.我觉得有点顽皮,只是在那里填充不同的杂项功能.例如,它有一些与低级别的东西相关的实用程序,例如lowercase()函数,它还有一些非常复杂的实用程序,例如转换为不同的颜色格式.

我的问题是,拥有如此大的utils.c并且有许多不同类型的实用程序,这是非常顽皮的吗?我应该将它分解成许多不同类型的实用程序文件吗?比如graphics_utils.c等等你怎么看?

code-organization organization

5
推荐指数
4
解决办法
377
查看次数

我应该将源文件和类文件捆绑在同一个 JAR 中吗?

单独的罐子

在创建 JAR 文件时,我总是将源文件分开并作为可选的附加文件提供。

例如:

  • 文件
  • foo-source.jar

这似乎是显而易见的做事方式,并且非常普遍。优点是:

  1. 保持二进制 jar 很小
  2. 来源可能未公开/公开
  3. 类加载器更快?(我不知道,只是猜测)

单罐

我开始怀疑这些优势是否总是值得的。我正在开发一个开源的小组件。无论如何,我上面列出的优点都不是这个项目中的问题:

  1. 类 + 源仍然很小(并将保持这种状态)
  2. 源是开放的
  3. 这个 jar 的类加载速度无关紧要

然而,保持类的源代码确实带来了新的优势:

  1. 单一依赖
  2. 源和类之间没有版本不匹配的问题
  3. 使用此 jar 的开发人员将始终手头有源(调试或检查)

这些新优势对我来说真的很有吸引力。是的,我可以将源代码、类甚至 javadoc 压缩到一个 zip 文件中,然后让我的组件的客户决定他们想要使用哪个(就像谷歌对番石榴库所做的那样),但这真的值得吗?

我知道它有点违反传统的软件工程逻辑,但我认为单个 jar 文件的优势超过了替代方案。

我错了吗?有没有更好的办法?

java dependencies jar code-organization organization

5
推荐指数
1
解决办法
1703
查看次数

我应该如何在Python中安排类中的方法?

如何(或者是一种干净的方式)在Python中组织方法?

我总是__init__首先使用方法,然后是其他任何方法__foo__(你称之为什么?)方法.但随后它会导致混乱.

python methods code-organization

5
推荐指数
1
解决办法
1141
查看次数

组织要进行单元测试的 C++ 项目的有效方法是什么?

我想知道组织将要进行单元测试的 C++ 项目和类的有效方法是什么。我读过很多与单元测试相关的帖子,但找不到实际的例子。

以下是我收集的一些方法:

方法A

  • 项目 A:“包含”项目 C 中的类的应用程序 (.exe) 项目
  • 项目 B:“包含”项目 C 中的类的单元测试 (.exe) 项目
  • 项目 C:静态库 (.lib) 项目,保留项目 A 使用的所有类

方法B

  • 项目 A:应用程序 (.exe) 项目,其内部包含所有类。
  • 项目 B:“链接”到项目 A 中的类的单元测试 (.exe) 项目

方法C(来自Miguel)

  • 只有一个项目,三种配置:
    • 调试:在调试模式下构建应用程序 .exe。
    • 发布:在发布模式下构建您的应用程序.exe。
    • 测试:构建单元测试框架,用单元测试 main() 替换应用程序的 main()

哪种方式更合适呢?你有什么其他的建议?

c++ code-organization visual-studio

5
推荐指数
1
解决办法
1469
查看次数

如何在 ASP.NET 中组织数据访问层 (DAL)

我有一个用 C# 开发的 ASP.NET Web 窗体应用程序。

我想通过将 DAL 任务与后面的代码分开来构建我的应用程序。

我在 App_Code DBUtilities中创建了一个类,负责与数据库的通信,以免整个应用程序中出现重复的代码。该类具有获取数据表、标量值等的方法......并且它们接受连接字符串名称查询命令作为参数作为字符串。

问题是我的代码中仍然保留了所有查询命令。其中许多在页面上重复,这会导致维护问题。

我想知道创建一个包含许多字符串属性并将其与每个特定查询命令相关联的(静态)类QueryRepository是否是一个好习惯。每次我想执行查询命令MyCommand时,我都会将字符串的属性传递给DBUtilities类。更重要的是,如果我需要更改查询命令,我只需在 QueryRepository 类上执行即可。QueryRepository.MyCommand

这是组织我的 DAL 的好方法吗?

asp.net data-access-layer code-organization

5
推荐指数
1
解决办法
1万
查看次数

Java - 使库和导入可选

我有一个在 Java 应用程序中使用的库 - 它对于某些功能很重要,但它是可选的。这意味着如果 JAR 文件不存在,程序将继续运行而不会出现问题。我想开源我的程序,但我不能包含这个库,这是编译源代码所必需的,因为我有许多导入语句来使用 API。我不想维护两个代码集。从开源版本中删除物理 jar 文件,但仍保留代码以支持它,让其他人仍然可以编译它,最好的方法是什么?

java import jar code-organization

5
推荐指数
1
解决办法
2116
查看次数

Java代码组织:在哪里保留静态类的实例

这个问题可能有点主观,但我只是想按照最好的编程实践来组织代码.

我有一个类Polynomial,它引用了很多类Rational,并且在许多不同的方法中,它使用一个Rational等于1,0或-1的值进行比较.

因此,我定义了以下常量:

public static final Rational ZERO    = new Rational(0);
public static final Rational ONE     = new Rational(1);
public static final Rational NEG_ONE = new Rational(-1);
Run Code Online (Sandbox Code Playgroud)

但是,我不确定的是在哪里以有意义的方式存储这些值.

一方面,Polynomial使用它们的是什么,因此将它们存储在类中将它本地化到它将被使用的位置.这也意味着它可以更改为private,以便仅在一个类中使用.

在另一方面,如果内部定义Rational,然后到值的所有通话变得Rational.ZERO,Rational.ONE,Rational.NEG_ONE-这使得它非常可读的,并组织其在词汇理解的方式.它还提供了定义类似常量的机会,Polynomial如果需要的话.

所以基本上,除了意见之外,组织在这样的事情中最常见的做法是什么?我的想法是否适合它的任何一个位置,还是有其他解决方案我没有考虑过?

java code-organization organization

5
推荐指数
1
解决办法
262
查看次数

现代Java编译器/ JVM内联函数/方法是否完全从一个地方调用?

我发现C++编译器这样做但我想知道Java编译器是否也这样做,因为在那个答案中他们说添加静态会这样做但是静态在java和C++中是不同的.在我的情况下表现会重要,因为我使用被称为每帧只有一次在一场比赛中循环,并呼吁无处功能,使其更易于阅读
在我的代码我有它设置了与此类似,只是多了很多电话

while(running)
{
    update();
    sync();
}
Run Code Online (Sandbox Code Playgroud)

然后update(),render()会调用更多调用其他方法的方法

private final void update()
{
    switch(gameState)
    {
        case 0:
            updateMainMenu();
            renderMainMenu();
            break;
        case 1:
            updateInGame();
            renderInGame();
            break;
         //and so on
    }
}

private final void updateInGame()
{
    updatePlayerData();
    updateDayCycle();
    //and so on
}

private final void updatePlayerData()
{
    updateLocation();
    updateHealth();
    //and so on
}
Run Code Online (Sandbox Code Playgroud)

那么编译器是否会内联这些函数,因为它们只在同一位置每帧使用一次?

如果这是一个不好的问题,请告诉我,我将删除它.

java performance code-organization

5
推荐指数
1
解决办法
4196
查看次数

如何组织我的 Java 代码?

标题并不是我的全部问题。从理论上讲,我知道如何组织代码,但我想要一些具体的、有用的指针。请在抱怨之前继续阅读。

我是 java 和 OOP(面向对象编程)的初学者,我真的很想学习如何更好地组织我的代码!在一两个月的时间里,我制作了一个计算器程序,里面有一些我想到的小功能,还内置了一些小笑话。第二次查看后,我意识到它的格式非常糟糕,几乎难以理解。如果可以的话,我想请一些更有经验的程序员为我指明正确的方向,告诉我应该做什么来修复它(例如,我可以把什么东西变成物体,我可以在哪里划分,等等)。

请注意,这是我第一次在这样的论坛上发帖,所以如果我需要澄清一些事情来帮助我,我做错了什么,我要求太多,请告诉我,以便我可以解决它我可以获得帮助。不要只是将其标记为无效并将其归档以遗忘(就像 stackoverflow 中经常发生的那样)。另外,在有人问之前,不,这不是家庭作业,它是我自己自学 java 的成果(可能是为什么它效果不太好)。

这是源代码:

// This is the original Calculator code without objects in a single class. not really efficient...
package randomClasses;
import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;
import javax.swing.*;

@SuppressWarnings("serial")
public class CalcClass
        extends JFrame
        implements ActionListener {
    JPanel[] row = new JPanel[6];
    JButton[] button = new JButton[21];
    String[] buttonString = {"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", ".", "/", "C", "v", "+/-", "=", "0", …
Run Code Online (Sandbox Code Playgroud)

java code-organization organization

5
推荐指数
1
解决办法
7845
查看次数

实例化和初始化 java.nio.files.Path?

我想在我创建的名为“DocumentGenerator”的类中使用 java.nio.files.Path 但我不确定在使用未传入另一个 Path 对象的构造函数时如何实例化和初始化它。这是我的类变量和两个构造函数:

private ArrayList<String> totalOutput;
private ArrayList<String> programInput;
private Scanner in;
private String savePath, fileName;
private Path file;

public DocumentGenerator(Path file) {
    this.programInput = new ArrayList<String>();
    this.totalOutput = new ArrayList<String>();
    this.in = new Scanner(System.in);
    this.file = file;
    this.savePath = "";
    this.fileName = "";
}

public DocumentGenerator(String savePath, String fileName) {
    this.programInput = new ArrayList<String>();
    this.totalOutput = new ArrayList<String>();
    this.in = new Scanner(System.in);
    this.savePath = savePath;
    this.fileName = fileName;
    this.file = 
}
Run Code Online (Sandbox Code Playgroud)

在第二个构造函数中, savePath 和 fileName 在我将它们放入我的 Paths …

java oop code-organization

5
推荐指数
1
解决办法
7710
查看次数