标签: maintainability

您最后会后悔或退出哪些编程快捷方式?

我看到了这个问题,它让我想起了旧DataGrid中的AutoGenerateColumns.我几次使用它们,我最终支持它,因为我需要数据格式化超过标准"吐出数据源列".同样,通过切换,听起来可以节省时间,但最终需要跟踪状态或其他内容,并相应地重写代码.

有没有你最终使用的东西,认为它会节省你的时间,但最终退出,因为它不能满足你的需要?

maintainability

9
推荐指数
1
解决办法
464
查看次数

如何在C#和C++代码之间共享常量?

我正在编写两个进程,一个使用C#和WCF,另一个使用C++和WWSAPI.我希望能够在一个地方定义用于两者之间通信的地址,并让C#和C++都使用它.这可能吗?

我最接近的是在IDL中定义常量,然后使用MIDL和TLBIMP将其放入可由C#使用的DLL中.然而,这似乎没有暴露常数,或者至少我无法弄清楚如何使它这样做.也许它仅限于类型定义.

还有其他建议吗?

c# c++ maintainability idl

9
推荐指数
3
解决办法
5721
查看次数

SQL中常量的最佳模式?

我已经看到了几种用于"克服"SQL Server中缺少常量的模式,但它们似乎都没有满足性能和可读性/可维护性问题.

在下面的示例中,假设我们在表上有一个完整的"状态"分类,选项似乎是:

  • 只是为了硬编码,可能只是"评论"状态

-- StatusId 87 = Loaded
SELECT ... FROM [Table] WHERE StatusId = 87;
Run Code Online (Sandbox Code Playgroud)
  • 使用状态查找表,然后加入此表,以便该WHERE子句引用友好名称.

子查询:

SELECT ... 
FROM [Table] 
WHERE 
  StatusId = (SELECT StatusId FROM TableStatus WHERE StatusName = 'Loaded');
Run Code Online (Sandbox Code Playgroud)

或加入

SELECT ... 
FROM [Table] t INNER JOIN TableStatus ts On t.StatusId = ts.StatusId 
WHERE ts.StatusName = 'Loaded';
Run Code Online (Sandbox Code Playgroud)
  • 一堆标量UDF被定义为返回常量,即

CREATE Function LoadedStatus()
RETURNS INT
AS
 BEGIN
  RETURN 87
 END;
Run Code Online (Sandbox Code Playgroud)

然后

SELECT ... FROM [Table] WHERE StatusId = LoadedStatus();
Run Code Online (Sandbox Code Playgroud)

(IMO会导致数据库中出现大量污染 - 在Oracle软件包中可能没问题)

  • 使用表值函数的类似模式将常量值保存为行或列,这些都是CROSS APPLIED …

sql-server maintainability constants

9
推荐指数
2
解决办法
1714
查看次数

Python:我应该离线保存 PyPi 包作为备份吗?

我的 Python 项目很大程度上依赖于 PyPi 包
我想确保:在未来的任何时候:我的应用程序所需的包将始终在 PyPi 上在线可用。
例如:-
我在 Github 上发现了一个需要 PyQt4 的项目。
当我尝试在我的 Linux 机器上运行它时,
它在启动时崩溃,因为它在 PyPi 上找不到 PyQt4 包。

注意:我知道 PyQt4 已被弃用

我进行了大量搜索以找到仍然包含 PyQt4 包的 PyPi 存档,但我在任何地方都找不到它们。

所以我必须重写该应用程序才能使其在 PyQt5 上运行。
我只更改了与UI相关的代码(即:PyQt4)。
其他功能仍在运行。

所以该应用程序的唯一问题是 PyQt4 包已从 PyPi 中删除。



所以,我的问题是:我应该保存我使用的 PyPi 包的备份吗?

python maintainability pypi

9
推荐指数
1
解决办法
352
查看次数

Java注释的可维护性?

我的项目正在慢慢实现Java注释.一半的开发人员 - 包括我自己 - 发现做任何复杂的注释似乎都会增加我们的整体维护负担.另一半的团队认为他们是蜜蜂的膝盖.

您对开发人员团队能够维护带注释代码的真实体验是什么?

java maintainability annotations

8
推荐指数
2
解决办法
645
查看次数

if和if-else之间有什么明显的区别吗?

鉴于以下代码片段,是否有任何明显的差异?

public boolean foo(int input) {
   if(input > 10) {
       doStuff();
       return true;
   }
   if(input == 0) {
       doOtherStuff();
       return true;
   }

   return false;
}
Run Code Online (Sandbox Code Playgroud)

public boolean foo(int input) {
   if(input > 10) {
      doStuff();
      return true;
   } else if(input == 0) {
      doOtherStuff();
      return true;
   } else {
      return false;
   }
}
Run Code Online (Sandbox Code Playgroud)

或者使用这段代码,单退出原则会更好吗?

public boolean foo(int input) {
   boolean toBeReturned = false;
   if(input > 10) {
      doStuff();
      toBeReturned = true;
   } else if(input == 0) {
      doOtherStuff();
      toBeReturned …
Run Code Online (Sandbox Code Playgroud)

java maintainability coding-style

8
推荐指数
1
解决办法
4241
查看次数

Delphi:可维护性虚拟与虚拟摘要

几个月前我写了一堆代码,现在我正在添加一些代码.我意识到我写了一堆函数,这些函数来自一个类,它有大约2/3的函数抽象和剩下的1/3虚函数.

我非常厌倦看到:

function descendent.doSomething() : TList;
begin
   inherited;
end;
Run Code Online (Sandbox Code Playgroud)

当我为基类得到这个:

function descendent.doSomething() : TList;
begin
   result := nil;
end;
Run Code Online (Sandbox Code Playgroud)

并且不愿意结束:

function descendent.doSomething() : TList;
begin

end;
Run Code Online (Sandbox Code Playgroud)

然后想知道为什么有些东西不起作用.

我喜欢使用抽象函数,因为编译器会告诉您是否因为没有实现某些函数而导致抽象错误.

我的问题是,因为我仍然是一个相对较新的Delphi程序员而且我从来没有必要维护任何8年的事情,是否值得花时间以这种方式修剪你的代码(即删除其中继承的函数)并将基类功能从抽象更改为具体)

delphi maintainability refactoring coding-style

8
推荐指数
2
解决办法
1716
查看次数

依赖注入和代码可维护性

我正在使用接口来提供依赖注入的(vb.net/asp.net)项目.但对我来说,感觉代码的可维护性已被杀死.当我想阅读代码时,我不能简单地跳转到使用的相关类的代码.我所看到的只是接口,因此我必须通过项目来查找正在执行的类.这真的伤害了我的生产力.

是的,我知道我现在可以使用各种替换类来实现接口.但是,例如,我知道我不会很快改变我的数据源 - 我没有必要启用交换它的能力.所有这些依赖注入对我来说似乎有些过分(事实上,它唯一真正的原因是支持模拟类进行单元测试).我实际上已经读过几个地方,说DI实际上更适合可维护性.但这假设您已经知道一切都在哪里,并且您知道需要更新哪个类.找出去哪儿看是杀死我的部分.

所以,我的问题是:是否有更好的方法来遍历代码?有没有更好的方法使代码更易于维护?我们只是做错了吗?或者这是课程的标准?

asp.net maintainability dependency-injection

8
推荐指数
1
解决办法
645
查看次数

在MSBuild中创建具有布尔表达式结果的属性

有没有一种巧妙的方法来创建在MSBuild中使用的"布尔"属性?我可以评估Condition属性中的表达式,但不能评估CreateProperty任务的Value属性.

我想做这样的事情:

<CreateProperty Value="'$(IncludeInBuild)'=='' OR 
    '$([System.Text.RegularExpressions.Regex]::IsMatch($(MSBuildProjectFullPath), 
    $(IncludeInBuild)'=='True'">
    <Output TaskParameter="Value" PropertyName="MatchesInclude" />
</CreateProperty>
Run Code Online (Sandbox Code Playgroud)

给我的不是真或假,而是

''=='' OR '$([System.Text...
Run Code Online (Sandbox Code Playgroud)

我可以评估布尔表达式并使用结果设置属性吗?我现在的解决方法是在条件属性中重复表达式,无论我需要它.

msbuild maintainability

8
推荐指数
1
解决办法
3492
查看次数

如何编写一个可以轻松维护的概率算法?

假设我想创造一个游戏.在游戏开始时,玩家将挑选一个怪物.

公平地挑选怪物很容易.

// get all monsters with equal chance
public Monster getMonsterFair(){
    Monster[] monsters = {new GoldMonster(), new SilverMonster(), new BronzeMonster()};
    int winIndex = random.nextInt(monsters.length);
    return monsters[winIndex];
}
Run Code Online (Sandbox Code Playgroud)

并不公平地挑选怪物.

// get monsters with unequal chance
public Monster getMonsterUnFair(){
    double r = Math.random();
    // about 10% to win the gold one
    if (r < 0.1){
        return new GoldMonster();
    }
    // about 30% to winthe silver one
    else if ( r < 0.1 + 0.2){
        return new SilverMonster();
    }
    // about 70% …
Run Code Online (Sandbox Code Playgroud)

java algorithm maintainability refactoring

7
推荐指数
1
解决办法
1260
查看次数