标签: maintainability

如何避免300个开关块?

我试图在我的程序中添加300个挑战,但只有在CompletionValue.IsChecked = false时才显示它们;

如果您正在创建此程序.你将如何存储挑战?我正在使用一个开关,但有300个案例是矫枉过正,有更好的方法吗?

任何关于改进代码的建议都非常受欢迎.我对此有点新鲜.

    Random rand = new Random();
    // Constructor
    public MainPage()
    {
        InitializeComponent();
        AnswerValue.Visibility = Visibility.Collapsed;
        Load();

    }


    private void Load()
    {
        int random = rand.Next(1, 4);
        switch (random)
        {
            case 1:
                Challenge1();
                break;
            case 2:
                Challenge2();
                break;
            case 3:
                Challenge3();
                break;
        }
    }

    private void Challenge1()
    {
        DifficultyValue.Text = "20%";
        CompletionValue.IsChecked = false;
        TitleValue.Text = "Chicken or Egg?";
        QuestionValue.Text = "Can you answer the ancient question: Which came first the chicken of the egg?";
        bmp.UriSource = …
Run Code Online (Sandbox Code Playgroud)

c# maintainability switch-statement

4
推荐指数
1
解决办法
257
查看次数

参数设置的设计模式,可在适当大小的java项目中维护

我正在寻找有关如何为我的java程序管理许多不同参数设置的具体想法.我知道这个问题有点分散,但我需要一些关于大局的想法,以便我的代码变得更易于维护.

我的项目所做的是对数据执行许多处理步骤,主要是文本.这些处理步骤是通常具有许多设置的不同复杂度的算法.我还想更改配置文件使用的处理步骤.

我的程序的原因是进行可重复的实验,因此我需要能够获得代码不同部分中使用的所有参数的完整视图,最好是格式良好.

在这个(原型)阶段,我有源代码中的设置,如:

public static final param1=0.35;
Run Code Online (Sandbox Code Playgroud)

并且负责某个处理步骤的每个类都有自己的硬编码设置.它实际上非常可怕,因为没有简单的方法来改变事物,甚至没有看到做了什么以及使用什么参数/设置.

我的想法是为所有设置提供中央键/值存储,这些设置也支持转储所有设置.例:

k:"classA_parameter1",v:"0.35"
k:"classC_parameter5",v:"false"
Run Code Online (Sandbox Code Playgroud)

但是,我真的不想将参数存储为字符串,而是将它们与实际的java类或对象相关联.

拥有一个管理一切的单一"SettingsManager"是否更聪明.或者在main可以访问的每个类中有一个SettingsManager对象?我真的不喜欢存储设置的字符串描述,但我看不到任何其他方式(假设一个设置是使用的SAXparser实现,另一个参数是双倍,例如百分比),因为我真的不想存储它们作为对象并投射它们.

非常感谢有关相关设计模式的页面的经验和链接.

为了澄清,我的实验可以看作是一系列处理来自文件/数据库的数据的算法.这些算法根据其在整个过程中的任务分组为不同的类,例如

Experiment //main
   InternetLookup //class that controls e.g. web scraping
      ThreadedWebScraper 
      LanguageDetection //from "text analysis" package
   Statistics    //Calculate and store statistics
      DatabaseAccess
   DecisionMaking //using the data that we have processed earlier, make decisions (machine learning)
      BuildModel
      Evaluate
Run Code Online (Sandbox Code Playgroud)

每个最低级别的类都有参数并且不同但我仍然想要查看正在发生的所有事情.

java maintainability

4
推荐指数
1
解决办法
808
查看次数

APL可读性

我必须在APL中编码.由于代码将被维护很长一段时间,我想知道是否有一些论文/书籍包含启发式/提示/样本,以帮助设计清洁和可读的APL程序.

与使用其他编程语言编码不同,这是一种不同的体验.例如,制作一个功能.Small无济于事:这样的函数可以包含一行代码,这是完全不可理解的.

maintainability readability apl

4
推荐指数
1
解决办法
810
查看次数

可读性与可维护性:将语句压缩为循环

首先,我所指的一个例子:

UINT f, i, s;
CONST UINT k[5] = { VK_LBUTTON, VK_RBUTTON, VK_MBUTTON, VK_XBUTTON1, VK_XBUTTON2 };

for (f = RI_MOUSE_LEFT_BUTTON_DOWN, i = 0, s = RI_KEY_MAKE; f != RI_MOUSE_WHEEL; f <<= 1, i += s, s = !s)
    if ((pMouseData->usButtonFlags & f) == f)
        SetVKeyState(k[i], s);
Run Code Online (Sandbox Code Playgroud)

与此相比:

if (pMouseData->usButtonFlags & RI_MOUSE_LEFT_BUTTON_DOWN)
    SetVKeyState(VK_LBUTTON, RI_KEY_MAKE);

if (pMouseData->usButtonFlags & RI_MOUSE_LEFT_BUTTON_UP)
    SetVKeyState(VK_LBUTTON, RI_KEY_BREAK);

if (pMouseData->usButtonFlags & RI_MOUSE_RIGHT_BUTTON_DOWN)
    SetVKeyState(VK_RBUTTON, RI_KEY_MAKE);

if (pMouseData->usButtonFlags & RI_MOUSE_RIGHT_BUTTON_UP)
    SetVKeyState(VK_RBUTTON, RI_KEY_BREAK);

if (pMouseData->usButtonFlags & RI_MOUSE_MIDDLE_BUTTON_DOWN)
    SetVKeyState(VK_MBUTTON, RI_KEY_MAKE);

if (pMouseData->usButtonFlags & …
Run Code Online (Sandbox Code Playgroud)

c maintainability performance winapi readability

4
推荐指数
1
解决办法
242
查看次数

编程时存储“百分比”的最佳方法?

我有一个经常处理“百分比”的财务应用程序。我们使用“十进制”类型来避免舍入错误。我的问题是:

如果我有一个代表 76% 的数量,将其存储为0.76或更好吗76

此外,从代码可维护性的角度来看,有哪些优点和/或缺点?有这方面的约定吗?

maintainability

4
推荐指数
1
解决办法
949
查看次数

第二组功能仅在一行代码中有所不同

我有两个性能关键的功能,如下所示:

insertExpensive(Holder* holder, Element* element, int index){
    //............ do some complex thing 1 
    holder->ensureRange(index);//a little expensive
    //............ do some complex thing 2
}
insertCheap(Holder* holder, Element* element, int index){
    //............ do some complex thing 1
    //............ do some complex thing 2
}
Run Code Online (Sandbox Code Playgroud)

如何将2个功能组合在一起以提高可维护性?

我糟糕的解决方案

解决方案1.

insertExpensive(Holder* holder, Element* element, int index){
    do1();
    holder->ensureRange(index);//a little expensive
    do2();
}
insertCheap(Holder* holder, Element* element, int index){
    do1();
    do2();
}
Run Code Online (Sandbox Code Playgroud)

这将是丑陋的.如果do2想要一些局部变量,这也是不切实际的do1.

解决方案2.

insert(Holder* holder, Element* element, int index, bool check){ …
Run Code Online (Sandbox Code Playgroud)

c++ maintainability performance function code-duplication

4
推荐指数
1
解决办法
797
查看次数

什么是普遍接受的代码格式指南?

根据McCall的质量模型,产品修订是描述软件产品质量属性的三个主要观点之一.在"产品修订"的视角下,可维护性,查找和修复缺陷的能力被确定为影响修改软件能力的关键品质因素.

显然,在修订过程中的某个阶段,需要人为参与,特别是程序员的参与.代码的格式化会影响程序员有效和高效地修改软件的能力.

你曾经使用过哪些与语言无关的代码格式化指南,以便在代码修订过程中最大限度地提高程序员的效率和效率?

language-agnostic formatting maintainability qa

3
推荐指数
2
解决办法
605
查看次数

在重构项目以提高可维护性时,目标是什么?

我有一个项目(大约80K LOC)正在进行中,我已经有近整整一个月的豪华重构,并且在发布之前增加时间,只要我小心不要破坏任何东西.话虽如此,我该怎么做才能提高可维护性.请注意,这个项目没有进行单元测试,我并没有真正计划为此添加单元测试,但如果这是我将考虑的共同共识.

我应该寻找的关键事项是什么,并考虑修改或重构以提高软件的可维护性和质量?

编辑:我已经明确了我需要进行单元测试.这不是我真正做过的事情,对于新的单元测试开发人员来说有什么好的资源(最好是通过VS2008的单元测试框架)?

maintainability refactoring

3
推荐指数
2
解决办法
317
查看次数

游戏开发:游戏开发者如何在不考虑FPS的情况下保持游戏速度?

比如一个角色在游戏中花了一秒钟,如果FPS是10fps,30fps,100fps等,游戏开发者如何将跳跃时间保持在1秒? - 如果你找到我,你将如何阻止游戏的fps基本上影响游戏速度.

我认为有一种方法可以做到这一点,所以我想知道究竟是什么?

谢谢你,亚历克斯!

maintainability performance frame-rate

3
推荐指数
1
解决办法
778
查看次数

EmberJS 可维护性

我正在写一篇关于 AngularJS 与 EmberJS 的文章。在这里,我将这两个问题与不同的问题进行比较,最后根据这些问题的答案决定哪一个更适合开发 Web 应用程序。

我在 EmberJS 中一直困扰的一个问题是可维护性。与 AngularJS 不同,我找不到一篇提供相关信息的文章。

我想知道 EmberJS 如何帮助您维护 EmberJS Web 应用程序。它提供了哪些概念或其他内容来帮助您为使用 EmberJS 构建的 Web 应用程序实现高水平的可维护性。

感谢您提供有关回答此问题的任何帮助。

maintainability ember.js

3
推荐指数
1
解决办法
124
查看次数