我很想知道人们如何组织他们的代码库,特别是关于可重用组件.我在下面以OO术语进行讨论,但我对如何组织其他类型语言的库感兴趣.
例如:
等等
编辑
我不是在寻找具体的指导,我只是对人们的想法和实践感兴趣.我特别感兴趣的是在不同项目之间重用代码,而不是在单个项目中.(不幸的是,这里使用"项目"具有误导性 - 我的意思是在为客户进行的实际项目之间重用,而不是Visual Studio意义上的项目.)
有一段时间我会尝试使用LINQ.枚举集合并在我的代码中更改其某些属性的典型方法如下所示:
ATDataContext dc = new ATDataContext(Settings.connection_string);
int[] col = ListViewClass.getListViewSelectedPositionTags(listView);
try
{
foreach (var item in col)
{
var ctx = (from r in dc.MailingLists
where r.ID == item
select r).Single();
ctx.Excluded = 'Y';
ctx.ExcludedComments = reason;
}
dc.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
有一段时间有一个建议来做到这一点...似乎更聪明的方式:
var ctx = from r in dc.MailingLists
where col.Contains(r.ID)
select r;
foreach (var item in ctx)
{
item.Excluded = 'Y';
item.ExcludedComments = reason;
}
dc.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
Iit在很多层面上都很有意义,我喜欢这个解决方案.它比第一个更聪明,更快捷.
我已经在生产环境中使用了这个解决方案一段时间了.
几周后,我在搜索应用程序日志文件时看到了什么,并看到了这一点:
"传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确.此RCP请求中提供的参数太多.最大值为2100."
LINQ to SQL转换where col.Contains(r.ID)为IN子句看起来像:
WHERE ID …
是否有可能在MS-SQL中有一个'持久'临时表?我的意思是我目前有一个后台任务,它生成一个全局临时表,由各种其他任务使用(这就是为什么我把它全局化).不幸的是,如果表未被使用,它会被SQL自动删除 - 这是由我的系统优雅地处理,因为它只是将它排队再次重建,但理想情况下我希望它只是每天构建一次.所以,理想情况下我可以设置类似设置一些超时参数的东西,比如"如果没有触及这个1小时,那么删除".
我真的不希望它在我现有的数据库中,因为它会导致负载更多与管理数据库相关的麻烦(碎片,日志增长等),因为它有效地汇总数据,仅在24小时内有用,并且占用更多超过一千兆字节的高清空间.
最糟糕的情况我的计划是在与tempdb相同的驱动器上创建另一个数据库,称之为类似PseudoTempDB,并且只是自己处理掉线.
任何见解将不胜感激!
在Ruby中你可以像这样使用字符串插值:
text = "This is visit number #{numVisits} to this website"
Run Code Online (Sandbox Code Playgroud)
这绕过了显式连接的需要.
我正在使用jQuery并且有点像这样:
$(document).ready(function(){
$("a.ajax").click(function(event){
$("#content").load("data.html this.getClass");
});
});
Run Code Online (Sandbox Code Playgroud)
我想要的行为是"点击<a class="ajax" id="schedule"></a>并content div在当前页面上替换为schedule divfrom data.html.如果我手动写入
load("data.html #test");
Run Code Online (Sandbox Code Playgroud)
这工作,但我希望脚本加载DIV与点击锚点的ID值.任何帮助都会膨胀!
我正在查看Wrapper类的.h文件.该类包含一个私有成员:
T* dataPtr;
Run Code Online (Sandbox Code Playgroud)
(其中,T是如template < class T >在.h文件的顶部定义)
该类提供了两个"*重载运算符"方法:
T& operator*()
{
return *dataPtr;
}
const T& operator*() const
{
return *dataPtr;
}
Run Code Online (Sandbox Code Playgroud)
两者都只是简单地返回*dataPtr,但*dataPtr实际上用简单的英语返回的符号是什么?它如何适合返回类型" T&"?
有什么区别
10.6.to_i
Run Code Online (Sandbox Code Playgroud)
和
10.6.to_int
Run Code Online (Sandbox Code Playgroud)
?
我的问题与这个问题有关:Python工具,它为类的方法构建依赖关系图.
在找不到任何工具之后我自己写了一个快速黑客:我已经使用了编译器模块,我已经将源代码解析为抽象源代码树,并且我已经走了它来收集类方法之间的依赖关系.我的脚本生成了graphviz的输入文件,用于生成看起来像这样的依赖图.
此时我已经陷入困境.我意识到我不知道如何重构这个类以减少它的复杂性.我根本不知道我应该追求什么.例如,在关系数据库的理论中,有一些简单的规则用于将数据库带到正常形式.关于良好类设计的一些类似理论(就其方法之间的依赖关系而言)怎么样?这个主题是否涵盖在某处,以便我可以研究它?
我得到"要解密的数据长度无效".我试图解密内存流时的异常.我是初学者,无法弄清楚什么是错的.怎么了?
public bool EncryptStream()
{
string password = @"myKey123"; // Your Key Here
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);
s_EncryptedStream = new MemoryStream();
int NoOfBytes;
byte[] b_Buffer = new byte[8192];
s_MemoryStream.Seek(0, SeekOrigin.Begin);
RijndaelManaged RMCrypto = new RijndaelManaged();
s_CrytpoStream = new CryptoStream(s_EncryptedStream,
RMCrypto.CreateEncryptor(key, key),
CryptoStreamMode.Write);
while (s_MemoryStream.Length < s_MemoryStream.Position)
{
NoOfBytes = s_MemoryStream.Read(b_Buffer, 0, 8192);
s_CrytpoStream.Write(b_Buffer, 0, NoOfBytes);
}
s_MemoryStream.Seek(0, SeekOrigin.Begin);
while (s_EncryptedStream.Position < s_EncryptedStream.Length)
{
NoOfBytes = s_EncryptedStream.Read(b_Buffer, 0, 8192);
s_MemoryStream.Write(b_Buffer, 0, NoOfBytes);
}
s_CrytpoStream.Flush();
s_CrytpoStream.Close();
return …Run Code Online (Sandbox Code Playgroud) 我听说Qt API是用过时的C++语言编写的.这是真的吗?
有没有计划让它使用更现代的C++语言?有关于此的官方信息吗?
是否有任何项目旨在用更现代的C++包装当前的Qt API结构?
更新
这个问题比模板更重要,这不仅仅是关于当前事态的问题(这就是我用未来标签标记它的原因).
更新
我特别关注Qt API,因为这是该框架的用户使用的.
在API中使用现代C++语言使其更加健壮,灵活且易于使用.
在Qt中使用什么样的C++对我来说重要得多.
使用gdb,我遇到了一个奇怪的问题:有一种方法出现三次:
(gdb) b Logger::Logger
[0] cancel
[1] all
[2] Logger at src/Logger.cpp:52
[3] Logger at src/Logger.cpp:52
[4] Logger at src/Logger.cpp:52
Run Code Online (Sandbox Code Playgroud)
从所有三个实例都在文件Logger.cpp的第552行的事实来看,可以推断出它们实际上是指相同的方法.这是什么意思?Logger :: Logger构造函数是否意外地进入了二进制文件三次,或者这是一个gdb错误?
c++ ×2
api ×1
c# ×1
exception ×1
gdb ×1
integer ×1
javascript ×1
jquery ×1
linq-to-sql ×1
methods ×1
oop ×1
organization ×1
pointers ×1
python ×1
qt ×1
reusability ×1
ruby ×1
sql ×1
sql-server ×1
tempdb ×1
wrapper ×1