小编Seb*_*son的帖子

编码风格:如何改进公司的编码风格和标准

提高公司编码风格标准的最佳方法是什么?我们在这里以C#为例.

我想开发人员之间需要考虑很多差异.具体的可能是教育,经验和过去的编程语言.

一个人如何证明某事物是正确的呢?

一个人可能会说" 我把我的身体移到我用四轮车赚钱的地方 ".那么为什么说" 我开车上班 "更为"正确"呢?

有些人可能希望代码更明确,代码更多.有些人可能会喜欢更严格的代码

// Explicit
string text = defaultValue;
if (string.IsNullOrEmpty(text)) {
   text = fallbackValue;
}
// Tighter
string text = defaultValue ?? fallbackValue;
Run Code Online (Sandbox Code Playgroud)

或者旧的保护性编程风格,在开始时检查错误情况,而不是将整个方法体包装在正的if子句中:

public string ChangeText(string text)
{
    if (!string.IsNullOrEmpty(text))
    {
        // Do a lot of stuff 
    }
    else {
        throw new Exception();
    }
}
// vs.
public string ChangeText(string text)
{
    if (string.IsNullOrEmpty(text)) {
        throw new Exception();
    }
    // Do a lot of stuff
}
Run Code Online (Sandbox Code Playgroud)

旧的"我有阅读此代码的麻烦"在这里有效吗?这与将Generics引入C#的情况相同,人们在阅读它时遇到了初步的麻烦.

某些开发人员不习惯的不可读代码和代码之间的界线在哪里?

Phil Haacks" 新语言关键词悲伤的7个阶段 "的哪一部分在这里有效点? …

coding-style

13
推荐指数
2
解决办法
4623
查看次数

GitHub:对文件使用UTF-8编码

为什么UTF-8不是GitHub的默认编码?

这是否意味着从默认的"cp1252"改变任何缺点

它与在Windows和Mac OSX之间跨平台使用GitHub有什么关系吗?

问题来自使用GitHub,但一般可以询问Git.

我主要在.NET,HTML5和Javascript中进行开发,如果这在主题中很重要的话.

git encoding github

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

将文本字符串解析为F#-code

如何使用文本字符串(应该是F#-code)并将其解析为F#-code,以在屏幕上打印出结果?

我猜它可以通过.NET中的一个功能来解决,所以它可以通过F#本身或C#来完成.

这可能在tryfsharp.org上以什么方式解决?

.net f# parsing

11
推荐指数
1
解决办法
1310
查看次数

ASP.NET:压缩ViewState

压缩ASP.NET ViewState内容的最新和最好的方法是什么?

这个表现怎么样?保持页面快速并最小化数据流量是否值得?

我怎么做:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
value="/wEPDwUKMTM4Mjc3NDEyOWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgkFLGN0b
DAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCdXQxBSxjdGwwMCRDb250ZW50UGxhY2VIb
2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0MQUsY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyX01haW5Db250ZW50J
FJhZEJ1dDIFLGN0bDAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCdXQyBSxjdGwwMCRDb
250ZW50UGxhY2VIb2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0MwUsY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyX
01haW5Db250ZW50JFJhZEJ1dDQFLGN0bDAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCd
XQ0BSxjdGwwMCRDb250ZW50UGxhY2VIb2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0NQUsY3RsMDAkQ29udGVud
FBsYWNlSG9sZGVyX01haW5Db250ZW50JFJhZEJ1dDXz21BS0eJ7991pzjjj4VXbs2fGBw==" />
Run Code Online (Sandbox Code Playgroud)

进入这样的事情:

<input type="hidden" name="__VIEWSTATE"  id="__VIEWSTATE" 
value="/wEPDwUKMTM4Mjc3N==" />
Run Code Online (Sandbox Code Playgroud)

compression asp.net viewstate webforms

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

C#:内存高效搜索 200 万个对象,无需外部依赖

我需要能够在 C# 中搜索大约 200 万个项目的集合。应该可以在多个字段上进行搜索。简单的字符串匹配就足够了。

使用像数据库这样的外部依赖不是一种选择,但使用内存数据库就可以了。

主要目标是做到这一点内存高效

集合中的类型非常简单,没有长字符串:

public class Item
{
    public string Name { get; set; } // Around 50 chars
    public string Category { get; set; } // Around 20 chars
    public bool IsActive { get; set; }
    public DateTimeOffset CreatedAt { get; set; }
    public IReadOnlyList<string> Tags { get; set; } // 2-3 items
}
Run Code Online (Sandbox Code Playgroud)

重点和要求

明确重点和要求:

  • 没有外部依赖(如数据库)
  • 内存高效(200 万个项目低于 2 GB)
  • 集合中的可搜索项目(必须是高性能的)

今天的非最优解

使用简单List<T> …

c# optimization performance memory-management in-memory

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

ASP.NET:同步客户端和服务器端验证规则

有没有简单,智能的方法来保持客户端和服务器端验证规则的同步?

在客户端,我们有JavaScript,可能是某种框架,如jQuery或YUI.

在服务器端,我们有ASP.NET WebForms或ASP.NET MVC.

验证的是:

  • 正确的电子邮件地址
  • 正确的家庭住址和邮政编码
  • 正确的信用卡号码

等等.

.net c# asp.net validation

9
推荐指数
1
解决办法
2503
查看次数

有没有办法让AngularJS与HTML一起工作?

有没有办法从服务器获得具有预先填充值的HTML视图,然后让AngularJS将这些值读入其中$scope

我在想一个HTML是这样的场景:

<div ng-controller="TestController">
    <div ng-bind="title">Test Title</div>
    <div ng-bind="itemCount">33</div>
    <div ng-repeat="item in items">
        <div ng-bind="item.title">Item 1 Title</div>
    </div>
</div>
<button ng-click="update()">Update</button>
Run Code Online (Sandbox Code Playgroud)

JavaScript就是这样的:

function TestController($scope) {
    $scope.update = function() {
        console.log($scope.title); // Should log "Test Title"
    };
}
Run Code Online (Sandbox Code Playgroud)

这背后的想法是让服务器呈现搜索引擎可以索引的 HTML ,但是具有用于通过JS操纵的内容JavaScript模型表示.

seo angularjs

8
推荐指数
2
解决办法
1306
查看次数

C#Action和Func参数重载

我需要一个采用Action(或Func)的方法,但Action有一个混合数量的参数.实现这些重载的最直接,最紧凑的方法是什么:

public void Execute<T>(Action<T> action, T param) {
    // TODO: Implement something like:
    // Execute(action, param, null);
}

public void Execute<T1,T2>(Action<T1,T2> action, T1 param1, T2 param2) {
    // TODO: Implement something like:
    // Execute(action, param1, param2, null);
}

public void Execute<T1,T2,T3>(Action<T1,T2,T3> action, T1 param1, T2 param2, T3 param3) {
    DoStuff();
    action(param1, param2, param3)
    DoMoreStuff();
}

// OR any other type of higher order function-solution
public void Execute(Action action, params object[] parameters) { ... } // ???
Run Code Online (Sandbox Code Playgroud)

除了执行操作及其参数之外,方法的内容完全相同.

如果可能,请不要使用任何特定于C#4.0的功能来解决此问题.

c# parameters action overloading func

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

Open XML SDK:格式化Excel单元格的一部分

使用Open XML for Excel DocumentFormat.OpenXml.Spreadsheet,如何仅将文本的一部分设置为粗体?

var cell = new Cell {
    //DataType = CellValues.InlineString,
    CellReference = "A" + 1
};

// TODO: Set "bold text" to bold style
//var inlineString = new InlineString();
//inlineString.AppendChild(new Text { Text = "Normal text... bold text..." });
//cell.AppendChild(inlineString);
Run Code Online (Sandbox Code Playgroud)

注释掉现在使用的代码,但应该或可能应该更改.

c# excel openxml openxml-sdk

7
推荐指数
1
解决办法
6685
查看次数

Rust“工具链”究竟是什么?

我见过rustup被称为“工具链安装程序”,但很难找到 Rust 认为“工具链”是什么以及该概念的范围是什么的确切定义。

我已经安装了 Rust 编译器和 Cargo。还能rustup带来什么?它只是一个 Rust 版本切换器吗?


作为 .NET 开发人员,也许有一个相似之处可以让我更容易掌握这个概念?

toolchain rust rustup

7
推荐指数
1
解决办法
1634
查看次数