我对如何最好地将我的代码重构为更具可读性的东西感到困惑.
考虑一下这段代码:
var foo = getfoo();
if(foo!=null)
{
var bar = getbar(foo);
if(bar!=null)
{
var moo = getmoo(bar);
if(moo!=null)
{
var cow = getcow(moo);
...
}
}
}
return;
Run Code Online (Sandbox Code Playgroud)
如您所见,需要大量嵌套if块,因为每个嵌套块依赖于先前的值.
现在我想知道如何让我的代码在这方面更清洁一些.
我自己想到的一些选择是:
ArgumentNullExceptions,之后我将它们捕获到最后并将return语句放在我的finally子句中(或者在try/catch块之外)goto:大多数这些选项对我来说似乎有点"脏",所以我想知道是否有一种很好的方法来清理我创建的这个混乱.
我想知道如何在应用程序级别编写catch'em所有异常处理程序,这将为用户提供恢复应用程序流的选项?
我有一个奇怪的问题 - 在maven构建期间无法读取某些类文件.
A和项目B.B取决于项目A目标JAR文件.在项目B编译期间,它无法在项目AJAR文件中读取lib - 尽管指向它的部分是完美的.
我还检查并验证了maven脚本,这是完美的.
错误:
[INFO] Compiling 137 source files to V:\dhs_tss_build_view\dhs_tssproject\tss\tsscommon-server\target\classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/oblix/da/wsdl/OblixLoginAc
cess.java:[51,60] cannot find symbol
symbol : class BusinessException
location: class us.mn.state.dhs.tss.common.oblix.da.wsdl.OblixLoginAccess
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[187,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[204,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
[INFO] ------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.BuildFailureException: …Run Code Online (Sandbox Code Playgroud) 我的app.config文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="ProcessConfiguration" type="Configuration.ProcessConfigurationSection, Configuration" />
</configSections>
<ProcessConfiguration>
<processes>
<process name="Process1" />
</processes>
</ProcessConfiguration>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我有以下(单独)类来获取配置:
namespace Configuration
{
using System.Configuration;
public class ProcessesConfigurationSection : ConfigurationSection
{
[ConfigurationProperty("processes", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(ProcessCollection))]
public ProcessCollection Processes
{
get
{
return (ProcessCollection)base["processes"];
}
}
}
}
namespace Configuration
{
using System.Configuration;
public class ProcessCollection : ConfigurationElementCollection
{
public ProcessConfig this[int index]
{
get
{
return (ProcessConfig)BaseGet(index);
}
set
{
BaseAdd(index, value);
}
}
protected …Run Code Online (Sandbox Code Playgroud) 我有一个视图控制器,通过该loadView方法以编程方式创建其视图.视图的目的是显示数据模型内容.加载视图时,它在状态和导航栏下正确对齐.
但是稍后我会以模态方式呈现另一个视图,以允许用户选择不同的数据模型来填充视图.这会导致loadView再次调用并重新创建新数据模型所需的UI.问题是视图的内容现在出现在状态和导航栏下面!
请注意,我不使用自动布局,因为必须支持iOS4 :(如果我包含extendedLayout修复 - 它确实解决了问题,但只有在模态的消除动画完成后才会产生跳转效果.我的代码如下,谢谢任何帮助.
- (void)loadView {
CGRect frame = CGRectMake(0, 0, [Constants ScreenWidth], [Constants ScreenHeight] - StatusBarHeight - ToolbarHeight);
self.view = [[UIView alloc] initWithFrame:frame];
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight;
self.view.autoresizesSubviews = YES;
self.view.backgroundColor = [Constants categoriesScreenBackgroundColor];
CGRect scrollFrame = CGRectMake(0, 0, [Constants ScreenWidth], [Constants ScreenHeight] - StatusBarHeight - ToolbarHeight - ToolbarHeight);
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:scrollFrame];
scrollView.autoresizingMask = UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleBottomMargin |
UIViewAutoresizingFlexibleTopMargin;
[self.view addSubview:scrollView];
_toolbarViewController = [self createToolbarViewController];
[self.view addSubview:_toolbarViewController.view];
_toolbarViewController.productInfoWorkflowState …Run Code Online (Sandbox Code Playgroud) 我已经看到了一些具有类似这样的线程过程的示例.
private void ThreadProc()
{
while (serviceStarted)
{
// do some work
Thread.Sleep(new TimeSpan(0, 0, 5));
}
Thread.CurrentThread.Abort();
}
Run Code Online (Sandbox Code Playgroud)
最后Abort()真的有必要吗?
反对召唤有很多论据 Abort()
Abort()抛出异常,这通常比退出过程更耗费资源.我想解释为什么这是一个好的做法或者不是一个好的做法.
我有一个线程从网络或串口抓取一些数据.如果在5秒内没有收到数据,则线程必须终止(或返回false).
换句话说,如果运行线程花费的时间超过5秒,则必须停止.
我用C#编写,但任何.NET语言都可以.
我有一个DataGridView单位可以在一TextBox列中输入.
如何将此列的输入长度限制为6字符?
是否有使用Console.WriteLine(C#)或printfn(F#)编写粗体文本的快捷方法?
如果不是粗体,也许还有其他一种视觉区分,比如带下划线的文字?
我正在开发新的开发工作(ASP.NET 4.5)并尝试为它创建TFS空间.
这项工作与任何现有项目分开管理,是该系列的第一个项目,将在晚些时候完成.
从TFS的角度来看,这是更好的方法:
一个或另一个有什么好处?什么时候新的团队项目集合需要保证?
如果我们只是创建TFS团队项目,我们将实现必要的项目分离,以便对此项目的签入不会触发其他项目的构建,此项目的Bug报告不会受到其他项目的影响,单独的工作项维护,等等?
我们使用TFS 2012.