虽然基础类的内存管理是一致的并且有文档记录,但我很惊讶地发现(通过友好的EXC_BAD_ACCESS)基础函数,例如NSStringFromSelector()似乎返回指向常量存储的指针 - 这至少在函数的文档中没有提到.
这种行为是否记录在某处?有没有一致的指导方针?
Django如何使用基于子域的不同settings.py文件.
如果有不同的设置连接到不同的数据库,是否仍然可以使用这些实用程序("django-admin","python manage.py").
我正面临一个用例,我想声明一个static final带有初始化语句的字段,该语句被声明为抛出一个已检查的异常.通常,它看起来像这样:
public static final ObjectName OBJECT_NAME = new ObjectName("foo:type=bar");
我在这里遇到的问题是ObjectName构造函数可能会抛出各种已检查的异常,我并不关心这些异常(因为我知道我的名字是有效的,如果它没有崩溃就会崩溃).java编译器不会让我忽略它(因为它是一个经过检查的异常),我宁愿不诉诸:
public static final ObjectName OBJECT_NAME;
static{
try{
OBJECT_NAME = new ObjectName("foo:type=bar");
}catch(final Exception ex){
throw new RuntimeException("Failed to create ObjectName instance in static block.",ex);
}
}
因为静态块确实非常难以阅读.有没有人有一个关于如何以一个漂亮,干净的方式处理这种情况的建议?
很久以前我读过一篇文章(我相信一篇博客文章),它让我在命名对象的"正确"轨道上:非常谨慎地命名程序中的东西.
例如,如果我的应用程序(作为一个典型的业务应用程序)处理用户,公司和地址我有一个User,一个Company和一个Address域类 - 可能在某个地方UserManager,一个CompanyManager和一个AddressManager会弹出来处理这些事情.
所以,你可以告诉那些UserManager,CompanyManager和AddressManager做什么?不,因为Manager是一个非常通用的术语,适用于您可以对域对象执行的任何操作.
我读过的文章建议使用非常具体的名称.如果它是一个C++应用程序并且该UserManager工作正在分配并从堆中释放用户,那么它将不会管理用户,而是保护他们的出生和死亡.嗯,也许我们可以称之为UserShepherd.
或者可能UserManager的工作是检查每个User对象的数据并以加密方式对数据进行签名.然后我们有一个UserRecordsClerk.
现在这个想法一直困扰着我,我尝试应用它.并且发现这个简单的想法非常难.
我可以描述这些类的功能和(只要我不进入快速和脏编码)我写的类只做一件事.我想念从名称到名称的是一种名称目录,一种将概念映射到名称的词汇表.
最终,我想在我的脑海里有类似图案目录的东西(通常设计图案很容易提供对象名称,例如工厂)
保姆 - 帮助对象在创建后达到"可用"状态 - 例如通过连接到其他对象
等等
那么,你如何处理这个问题呢?你有一个固定的词汇表,你是否动态发明新的名字,或者你认为命名的东西不是那么重要或错误?
PS:我也对链接到讨论这个问题的文章和博客感兴趣.首先,这是让我思考它的原始文章:在没有"经理"的情况下命名Java类
以下是我在此期间从这个问题中学到的内容的一些总结.
关于这个主题的进一步文章/书籍:
以及我从答案中收集的主观名称前缀/后缀的当前列表:
如何在SQL Server 2005中将Unicode整数转换为Unicode字符.
例如,SELECT UNICODE('$')返回36.
我正在寻找一个需要36并返回'$'的函数.
以下LINQ语句:
public override List<Item> SearchListWithSearchPhrase(string searchPhrase)
{
List<string> searchTerms = StringHelpers.GetSearchTerms(searchPhrase);
using (var db = Datasource.GetContext())
{
return (from t in db.Tasks
where searchTerms.All(term =>
t.Title.ToUpper().Contains(term.ToUpper()) &&
t.Description.ToUpper().Contains(term.ToUpper()))
select t).Cast<Item>().ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
System.NotSupportedException:除Contains()运算符外,本地序列不能用于查询运算符的LINQ to SQL实现.
看看它似乎我唯一的选择是将我的所有项目首先放入一个通用列表,然后对其进行LINQ查询.
或者是否有一种巧妙的方法来重新编写上述LINQ-to-SQL语句以避免错误?
感谢Randy,您的想法帮助我构建了以下解决方案.它不优雅,但它解决了问题,因为这将是代码生成,我可以处理多达20个搜索术语,而无需任何额外的工作:
public override List<Item> SearchListWithSearchPhrase(string searchPhrase)
{
List<string> searchTerms = StringHelpers.GetSearchTerms(searchPhrase);
using (var db = Datasource.GetContext())
{
switch (searchTerms.Count())
{
case 1:
return (db.Tasks
.Where(t =>
t.Title.Contains(searchTerms[0])
|| t.Description.Contains(searchTerms[0])
)
.Select(t => t)).Cast<Item>().ToList(); …Run Code Online (Sandbox Code Playgroud) 如何使用filter子句ex:table.object.filter(表中的任何字段="sumthing")搜索django中表中的所有字段
谢谢.
如果给你一个大的n层项目(.NET),其中15,000行代码用"西班牙语"(变量,表格,类名等)编写,需要添加功能和修复错误,那么你的策略是什么呢? ?
编辑:编写原始软件的开发人员不懂英语,所以在这种情况下他们没用.
我有几个简单的Perl程序写入标准输出,但这有一些问题:
cmd控制台上,所以我无法控制它的显示方式(颜色和终端大小),更糟糕的是,控制台无法调整大小(至少在宽度上)为了解决这些问题,我希望能够在一个简单的GUI界面中显示输出作为选项.GUI应该响应直到程序结束(应该可以在窗口运行时滚动或调整窗口大小).
我可以使用什么简单的工具包和小部件来执行此操作?(我使用ActivePerl在Windows上开发).
django ×2
python ×2
c# ×1
cocoa ×1
console ×1
exception ×1
final ×1
foundation ×1
initializer ×1
java ×1
linq ×1
linq-to-sql ×1
naming ×1
objective-c ×1
oop ×1
perl ×1
sql-server ×1
static ×1
subdomain ×1
windows ×1