我看到了这个问题,它让我想起了旧DataGrid中的AutoGenerateColumns.我几次使用它们,我最终支持它,因为我需要数据格式化超过标准"吐出数据源列".同样,通过切换,听起来可以节省时间,但最终需要跟踪状态或其他内容,并相应地重写代码.
有没有你最终使用的东西,认为它会节省你的时间,但最终退出,因为它不能满足你的需要?
我正在编写两个进程,一个使用C#和WCF,另一个使用C++和WWSAPI.我希望能够在一个地方定义用于两者之间通信的地址,并让C#和C++都使用它.这可能吗?
我最接近的是在IDL中定义常量,然后使用MIDL和TLBIMP将其放入可由C#使用的DLL中.然而,这似乎没有暴露常数,或者至少我无法弄清楚如何使它这样做.也许它仅限于类型定义.
还有其他建议吗?
我已经看到了几种用于"克服"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)
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 …
我的 Python 项目很大程度上依赖于 PyPi 包。
我想确保:在未来的任何时候:我的应用程序所需的包将始终在 PyPi 上在线可用。
例如:-
我在 Github 上发现了一个需要 PyQt4 的项目。
当我尝试在我的 Linux 机器上运行它时,
它在启动时崩溃,因为它在 PyPi 上找不到 PyQt4 包。
注意:我知道 PyQt4 已被弃用
我进行了大量搜索以找到仍然包含 PyQt4 包的 PyPi 存档,但我在任何地方都找不到它们。
所以我必须重写该应用程序才能使其在 PyQt5 上运行。
我只更改了与UI相关的代码(即:PyQt4)。
其他功能仍在运行。
所以该应用程序的唯一问题是 PyQt4 包已从 PyPi 中删除。
我的项目正在慢慢实现Java注释.一半的开发人员 - 包括我自己 - 发现做任何复杂的注释似乎都会增加我们的整体维护负担.另一半的团队认为他们是蜜蜂的膝盖.
您对开发人员团队能够维护带注释代码的真实体验是什么?
鉴于以下代码片段,是否有任何明显的差异?
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) 几个月前我写了一堆代码,现在我正在添加一些代码.我意识到我写了一堆函数,这些函数来自一个类,它有大约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年的事情,是否值得花时间以这种方式修剪你的代码(即删除其中继承的函数)并将基类功能从抽象更改为具体)
我正在使用接口来提供依赖注入的(vb.net/asp.net)项目.但对我来说,感觉代码的可维护性已被杀死.当我想阅读代码时,我不能简单地跳转到使用的相关类的代码.我所看到的只是接口,因此我必须通过项目来查找正在执行的类.这真的伤害了我的生产力.
是的,我知道我现在可以使用各种替换类来实现接口.但是,例如,我知道我不会很快改变我的数据源 - 我没有必要启用交换它的能力.所有这些依赖注入对我来说似乎有些过分(事实上,它唯一真正的原因是支持模拟类进行单元测试).我实际上已经读过几个地方,说DI实际上更适合可维护性.但这假设您已经知道一切都在哪里,并且您知道需要更新哪个类.找出去哪儿看是杀死我的部分.
所以,我的问题是:是否有更好的方法来遍历代码?有没有更好的方法使代码更易于维护?我们只是做错了吗?或者这是课程的标准?
有没有一种巧妙的方法来创建在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)
我可以评估布尔表达式并使用结果设置属性吗?我现在的解决方法是在条件属性中重复表达式,无论我需要它.
假设我想创造一个游戏.在游戏开始时,玩家将挑选一个怪物.
公平地挑选怪物很容易.
// 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) maintainability ×10
java ×3
coding-style ×2
refactoring ×2
algorithm ×1
annotations ×1
asp.net ×1
c# ×1
c++ ×1
constants ×1
delphi ×1
idl ×1
msbuild ×1
pypi ×1
python ×1
sql-server ×1