小编And*_*iuk的帖子

如何防止箭头反模式

我对如何最好地将我的代码重构为更具可读性的东西感到困惑.

考虑一下这段代码:

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块,因为每个嵌套块依赖于先前的值.

现在我想知道如何让我的代码在这方面更清洁一些.

我自己想到的一些选择是:

  • 在每个if子句后返回,这意味着我有多个地方可以保留我的方法
  • 抛出ArgumentNullExceptions,之后我将它们捕获到最后并将return语句放在我的finally子句中(或者在try/catch块之外)
  • 使用标签和 goto:

大多数这些选项对我来说似乎有点"脏",所以我想知道是否有一种很好的方法来清理我创建的这个混乱.

c# design-patterns anti-patterns

51
推荐指数
7
解决办法
5093
查看次数

如何使用简历实现一个"catch'em all"异常处理程序?

我想知道如何在应用程序级别编写catch'em所有异常处理程序,这将为用户提供恢复应用程序流的选项?

c# exception

30
推荐指数
5
解决办法
4万
查看次数

maven编译失败

我有一个奇怪的问题 - 在maven构建期间无法读取某些类文件.

  1. 我有一个项目A和项目B.
  2. 项目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)

maven-2

26
推荐指数
3
解决办法
11万
查看次数

ConfigurationManager.GetSection给出错误"无法从程序集中加载类型...."

我的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)

c# app-config system.configuration

24
推荐指数
1
解决办法
2万
查看次数

当loadView再次调用时,iOS7 View会在状态/导航栏下移动

我有一个视图控制器,通过该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)

iphone layout objective-c ios7

15
推荐指数
2
解决办法
6428
查看次数

To CurrentThread.Abort或不是CurrentThread.Abort

我已经看到了一些具有类似这样的线程过程的示例.

    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()

  1. 一旦程序退出 - 预计它已经自行清理.
  2. 调用Abort()抛出异常,这通常比退出过程更耗费资源.

我想解释为什么这是一个好的做法或者不是一个好的做法.

.net c# multithreading

14
推荐指数
1
解决办法
2万
查看次数

如果未返回,则在间隔后终止一个线程

我有一个线程从网络或串口抓取一些数据.如果在5秒内没有收到数据,则线程必须终止(或返回false).

换句话说,如果运行线程花费的时间超过5秒,则必须停止.

我用C#编写,但任何.NET语言都可以.

.net c# multithreading terminate intervals

13
推荐指数
1
解决办法
1万
查看次数

如何设置datagridview列的最大长度

我有一个DataGridView单位可以在一TextBox列中输入.

如何将此列的输入长度限制6字符?

c# datagridview

10
推荐指数
2
解决办法
3万
查看次数

使用Console.WriteLine(C#)或printfn(F#)写粗体文本?

是否有使用Console.WriteLine(C#)或printfn(F#)编写粗体文本的快捷方法?

如果不是粗体,也许还有其他一种视觉区分,比如带下划线的文字?

.net c# windows console f#

10
推荐指数
1
解决办法
1万
查看次数

TFS团队项目集与团队项目

我正在开发新的开发工作(ASP.NET 4.5)并尝试为它创建TFS空间.

这项工作与任何现有项目分开管理,是该系列的第一个项目,将在晚些时候完成.

从TFS的角度来看,这是更好的方法:

  • 为此项目和所有后续项目创建一个新的TFS团队项目集合,然后创建一个团队项目
  • 或者只是使用现有的Collection创建一个新的TFS团队项目.

一个或另一个有什么好处?什么时候新的团队项目集合需要保证?

如果我们只是创建TFS团队项目,我们将实现必要的项目分离,以便对此项目的签入不会触发其他项目的构建,此项目的Bug报告不会受到其他项目的影响,单独的工作项维护,等等?

我们使用TFS 2012.

tfs tfs2012

8
推荐指数
1
解决办法
1万
查看次数