仔细阅读有关单身人士的事实(代码气味,而不是模式)我想知道:
我怎样才能重构我的代码以摆脱它们?
尽管几乎每个人都认为坏单身是坏的,但是,我找不到任何关于如何更换它们的实用建议.无论是非常微不足道还是非常艰难.
有一些方法我可以想到,但所有这些似乎都极大地膨胀了我的代码.
例如,假设我有一个"全局" AppConfig
类,其中包含有关产品的许可证信息并描述用户可用的功能.
我能想到的是:
AppConfig
实例的每个项目类创建一个公共基类.(不好意思:对于已经有基类的情况,例如表格,这是不可能的)setAppConfig
方法创建通用接口.AppConfigFactory
可以创建AppConfig
实例的全局(BAD:仅将问题转移到另一个类)我能做什么?
编辑:澄清:我在我的代码中发现了一个不好的单例.现在我想重构我的代码以删除它.我正在寻求关于如何实现这一目标的提示和一般想法.
下面有一个更好的方法来完成这个简单的任务吗?喜欢数组甚至是其他方法?
<?PHP
// current way
if ($city != NULL) {
$city = FilterALLHTML($city);
}
if ($state != NULL) {
$state = FilterALLHTML($state);
}
if ($title != NULL) {
$title = FilterALLHTML($title);
}
if ($division != NULL) {
$division = FilterALLHTML($division);
}
?>
Run Code Online (Sandbox Code Playgroud)
这是我目前的职能
function FilterALLHTML($document) {
//old array line //"'<[\/\!]*?[^<>]*//?//>'si",// strip html
$text = strip_tags($document);
$search = array ("/f.?u.?c.?k/i",
"/(s|$).?h.?i.?t/i",
'/(potspace|mycrib|palbolt)/i');
$text = preg_replace ($search, '', $text);
return $text;
}
Run Code Online (Sandbox Code Playgroud)
更新 - 在这篇帖子的建议之后,感谢我的新功能
function FilterALLHTML($var) {
//old array line //"'<[\/\!]*?[^<>]*//?//>'si",// …
Run Code Online (Sandbox Code Playgroud) 我有一个ASP.net网站项目(.net 3.5).目前,代码文件背后的所有非代码(包括Linq2Sql内容,数据上下文,业务逻辑,扩展方法等)都位于App_Code文件夹中.
我有兴趣在项目的至少某些部分中引入单元测试(使用nunit).我要做的任何单元测试都需要完全访问当前位于App_Code文件夹中的所有代码.到目前为止,我已经做了一些初步阅读,并且共识似乎是:
它是否正确?或者还有另一种方法可以在不重组/重构整个项目的情况下进行单元测试吗?
我可以找到一种方法从我的通知中向我的活动发送参数.
我有一个创建通知的服务.当用户点击通知时,我想用一些特殊参数打开我的主要活动.例如项目ID,因此我的活动可以加载并呈现特殊项目详细信息视图.更具体地说,我正在下载一个文件,当下载文件时,我希望通知有一个意图,当点击它时,它会以特殊模式打开我的活动.我试图使用putExtra
我的意图,但似乎无法提取它,所以我认为我做错了.
我的服务中创建通知的代码:
// construct the Notification object.
final Notification notif = new Notification(R.drawable.icon, tickerText, System.currentTimeMillis());
final RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, tickerText);
contentView.setProgressBar(R.id.progress,100,0, false);
notif.contentView = contentView;
Intent notificationIntent = new Intent(context, Main.class);
notificationIntent.putExtra("item_id", "1001"); // <-- HERE I PUT THE EXTRA VALUE
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notif.contentIntent = contentIntent;
nm.notify(id, notif);
Run Code Online (Sandbox Code Playgroud)
我的Activity中的代码尝试从通知中获取额外参数:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if(extras != null){
Log.i( "dd","Extra:" + …
Run Code Online (Sandbox Code Playgroud) 在linux中,是否有内置的C库函数来获取机器的CPU负载?据推测,我可以编写自己的函数来打开和解析/ proc中的文件,但似乎应该有更好的方法.
为什么这个代码并不会导致内存泄漏?
int iterCount = 1000;
int sizeBig = 100000;
for (int i = 0; i < iterCount; i++)
{
std::auto_ptr<char> buffer(new char[sizeBig]);
}
Run Code Online (Sandbox Code Playgroud)
WinXP sp2,编译器:BCB.05.03
请告诉我从MySQL查询中使用"IN子句"的经验被认为是一个太大的列表来推动被认为是好的做法?
示例场景是我有一个用户ID号的字符串,我将从缓存中提取,它可以从1个数字一直到该列表中的5,000个数字,我将使用这个列表的mysql查询,如下所示例;
SELECT column FROM table
WHERE userid
IN ( 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 )
Run Code Online (Sandbox Code Playgroud)
你能告诉我你对这个问题的看法吗?
我没有太多使用HierarchyID,所以我有点不确定.如果我的表有HierarchyID,我该如何执行级联删除?(即删除'父母'时删除所有'孩子')
我假设我将不得不使用CTE和HierarchyID函数,但不知道如何去做...
我喜欢编写c#代码,我想通过它来检查sqlserver中是否有表?
任何人都可以给我一个示例代码吗?
程序员通常不太关注用户界面,而是更多地关注功能,但用户首先要根据其外观来判断产品,因此有必要为Web,桌面和移动应用程序提供良好的用户界面.
就个人而言,我不喜欢花费太多时间进行用户界面设计,有时会尝试寻找一些示例然后修改现有设计.
有没有人知道任何优秀的网络资源与Web,桌面和移动设备的用户界面集合?
c++ ×2
sql-server ×2
android ×1
asp.net ×1
auto-ptr ×1
bundle ×1
c ×1
c# ×1
hierarchyid ×1
linux ×1
memory-leaks ×1
mysql ×1
nunit ×1
oop ×1
performance ×1
php ×1
unit-testing ×1