Questions tagged «.net»

.NET Framework是用于Microsoft Windows操作系统的软件框架。它包括基类库,公共语言运行时和动态语言运行时的实现。它支持许多编程语言,包括C#,VB.NET,F#和C ++。

11
如果我需要设计来开始测试,我不明白TDD如何帮助我获得良好的设计
我试图围绕TDD,特别是开发部分,全神贯注。我看过一些书,但是我发现的书主要涉及测试部分-NUnit的历史,为什么测试很好,红色/绿色/重构以及如何创建字符串计算器。 好东西,但这只是“单元测试”,而不是TDD。具体来说,如果我需要一个设计来开始对其进行测试,我不理解TDD如何帮助我获得一个好的设计。 为了说明这一点,请想象一下这三个要求: 目录需要有产品列表 目录应记住用户查看过的产品 用户应该可以搜索产品 在这一点上,许多书从书本上摘下来,只是跳入“测试ProductService”,但他们没有解释如何得出结论,即首先有ProductService。这就是我要理解的TDD中的“开发”部分。 需要有一个现有的设计,但是实体服务之外的东西(也就是说:有一个Product,所以应该有一个ProductService)找不到地方(例如,第二个要求要求我有一个用户,但是我应该在哪里提醒该功能?搜索是ProductService的功能还是单独的SearchService?我怎么知道应该选择哪个?) 根据SOLID,我将需要一个UserService,但是如果我设计一个没有TDD的系统,则可能会得到一堆完整的Single-Method Services。TDD并不是一开始就让我发现自己的设计吗? 我是.net开发人员,但Java资源也可以使用。我觉得似乎没有真正的示例应用程序或书籍可以处理真正的业务应用程序。有人可以提供一个清晰的示例来说明使用TDD进行设计的过程吗?
50 java  c#  .net  tdd 

1
为什么.Net世界似乎包含魔术字符串而不是静态类型的替代字符串?
因此,我在.Net中工作。我在.Net中制作开源项目。我最大的问题之一不是.Net的必要性,而是它周围的社区和框架。似乎到处都有神奇的命名方案和字符串被视为做所有事情的最佳方法。大胆的声明,但看看它: ASP.Net MVC: 您好世界路线: routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "" } // Parameter defaults ); 这意味着ASP.Net MVC将以某种方式HomeController在您的代码中查找。以某种方式创建它的新实例,然后Index 显然使用某种id参数调用该函数。然后还有其他类似的东西: RenderView("Categories", categories); ...or.. ViewData["Foobar"]="meh"; 然后XAML也有类似的事情。DataContext被视为一个对象,您必须希望并祈祷它可以解析为所需的类型。DependencyProperties必须使用魔术字符串和魔术命名约定。像这样的事情: MyData myDataObject = new MyData(DateTime.Now); Binding myBinding = new Binding("MyDataProperty"); myBinding.Source = …

5
作为C#开发人员,您会学习Java为Android开发还是使用MonoDroid?[关闭]
我认为自己非常精通C#。目前,这是我选择的语言,基本上,这就是我所有专业经验的基础。 不过,我对MonoDroid项目的存在感到困惑。我一直认为C#和Java 非常接近。就像,如果您知道一个,就可以很快地学习另一个。因此,当我考虑开发自己的第一个Android应用程序时,我以为自己会熟悉Java并足以入手,然后就可以自己学习了。 这难道不比使用MonoDroid更有意义,因为MonoDroid的功能可能不如Java Android SDK丰富,并且仍然需要学习自己的API(尽管是.NET API)?我只是觉得学习一门新语言(以及当时非常流行的一种语言)并获得一些经验(最好是无论如何都已经非常接近它)会更好,而不是坚持使用已有的技术却没有获得更多有价值的技能 也许我严重误解了平均潜在的MonoDroid用户。也许对Java和.NET经验丰富的人更喜欢.NET。或者,也许(实际上有可能)我只是没有考虑其他因素。我只是想知道,为什么您会使用MonoDroid而不是仅使用Java为Android开发?
46 java  c#  .net  android  monodroid 

7
.NET属性-使用私有集还是只读属性?
在什么情况下,我应该在属性上使用私有集而不是将其设置为ReadOnly属性?考虑以下两个非常简单的示例。 第一个例子: Public Class Person Private _name As String Public Property Name As String Get Return _name End Get Private Set(ByVal value As String) _name = value End Set End Property Public Sub WorkOnName() Dim txtInfo As TextInfo = _ Threading.Thread.CurrentThread.CurrentCulture.TextInfo Me.Name = txtInfo.ToTitleCase(Me.Name) End Sub End Class // ---------- …
45 c#  .net  vb.net 

13
期望Any()* not *引发null引用异常是否不合理?
当你创建一个扩展方法就可以了,当然,调用它null。但是,不像一个实例方法调用,调用它在空不具有扔NullReferenceException- >您必须检查和手动把它。 为了实施Linq扩展方法,Any()Microsoft决定他们应该抛出一个ArgumentNullException(https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/AnyAll.cs)。 我不得不写信 if( myCollection != null && myCollection.Any() ) 作为此代码的客户端,我期望eg ((int[])null).Any()应该返回false吗?

8
反转IF语句
因此,我已经编程了几年,最近又开始更多地使用ReSharper。ReSharper经常向我建议的一件事是“反转'if'语句以减少嵌套”。 假设我有以下代码: foreach (someObject in someObjectList) { if(someObject != null) { someOtherObject = someObject.SomeProperty; } } ReSharper建议我这样做: foreach (someObject in someObjectList) { if(someObject == null) continue; someOtherObject = someObject.SomeProperty; } 看来,无论进行多少嵌套,ReSharper都会总是建议我反转IF。这个问题是我至少在某些情况下喜欢嵌套。对我来说,似乎更容易阅读和弄清某些地方的情况。并非总是如此,但有时我感到更舒适的嵌套。 我的问题是:除了个人喜好或可读性之外,还有其他减少嵌套的理由吗?是否存在性能差异或其他我可能不知道的东西?

7
为什么“对象引用未设置为对象的实例”不能告诉我们哪个对象?
我们正在启动一个系统,有时我们会收到NullReferenceException消息中著名的异常Object reference not set to an instance of an object。 但是,在一种有将近20个对象的方法中,记录一个对象为空的日志实际上根本没有用。这就像告诉您,当您是研讨会的安全人员时,100位参加者中的一个人是恐怖分子。真的对您毫无用处。如果要检测哪个人是威胁性的人,则应该获取更多信息。 同样,如果要删除该错误,则需要知道哪个对象为空。 现在,有些事情困扰了我几个月,这就是: .NET为什么不给我们名称或对象引用的类型(至少为null)?。它不能从反射或任何其他来源理解类型吗? 另外,了解哪个对象为空的最佳实践是什么?我们是否应该始终在这些上下文中手动测试对象的可空性并记录结果?有没有更好的办法? 更新: 异常The system cannot find the file specified具有相同的性质。在附加到进程并进行调试之前,您无法找到哪个文件。我猜这些类型的异常会变得更聪明。如果.NET可以告诉我们c:\temp.txt doesn't exist.而不是一般性消息,会更好吗?作为开发人员,我投赞成票。

4
为什么有人会花时间在微软“罗斯林”上?
我刚刚阅读了Microsoft“ Roslyn”的一些白皮书和示例,这个概念似乎非常有趣。据我所知,它打开了一个黑框,即编译器,并提供了一个接口,我们可以使用该接口来获取有关在Visual Studio中编写的代码的信息和指标。 Roslyn似乎也具有“编写”代码并即时编译/执行代码的能力(类似于CodeDom),但是根据我的经验,我在使用该功能时仅遇到了有限的使用。 虽然代码分析和指标元素是一个有趣的领域,但是它已经存在了很长时间,并且很多提供商已经在代码分析和重构工具(例如ReSharper,CodeRush)上投入了大量资金。 ,nCover等),他们做得很好! 为什么任何公司都会竭尽全力去实施一些可以通过购买现有工具之一的许可证而以很小的成本提供的东西? 也许我错过了Roslyn项目的一些关键功能,这些功能使它超出了所提及工具的范围...

8
为什么.Net书籍为什么谈论堆栈与堆内存分配?
似乎每本.net书籍都在谈论值类型与引用类型,并使其指向(通常是错误地)存储每种类型(堆或栈)的状态。通常,它在前几章中介绍,是一些非常重要的事实。我认为认证考试甚至都涵盖了它。为什么(初学者).Net开发人员堆栈与堆甚至重要?您分配的东西就可以了,对吧?
36 .net 

8
Linq是否对.NET程序员产生麻木的作用?
大约一年前,当人们开始问如何使用jQuery检索查询字符串等绝对疯狂的事情时,我们很多人开始在jQuery中看到这种现象。库(jQuery)和语言(JavaScript)之间的区别显然已被许多程序员所忽略,并导致在不必要的地方编写了许多不合适的,费解的代码。 也许这只是我的想象,但我发誓我开始看到人们要求使用Linq做类似疯狂的事情的问题数量激增,例如按一定顺序查找范围。我无法克服Linq扩展对于解决该问题有多么不恰当,但更重要的是,作者只是认为理想的解决方案将涉及Linq而没有实际考虑(据我所知)。似乎我们正在重复历史,滋生了无法分辨语言(C#/ VB.NET)和库(Linq)之间区别的新一代.NET程序员。 是什么导致这种现象?只是炒作吗?喜tend倾向?Linq是否已经获得了魔术般的声誉,在这里您不必说出正确的咒语,而不必实际编写代码?我对这些解释不满意,但我真的想不出其他任何东西。 更重要的是,这确实是一个问题吗?如果是,那么帮助这些人开悟的最佳方法是什么?


13
职业建议:继续使用PHP或以其他方式(.Net?)开始新的职业[关闭]
我计划在6到12个月内搬到纽约,所以我不得不寻找新工作。当我计划在另一个城市开始我的生活时,也可能是考虑职业变化的好时机。 我发现了关于PHP,.Net和Java的许多不同观点,这不是这里的主题。我不想就哪种语言更好展开新的斗争。成为一名软件开发人员,了解编程语言并不是最重要的事情。要成为一名真正的优秀开发人员,您需要了解OOP,设计模式,测试...,而语言只是使事情成真的工具。 回到我的问题。我在IT方面有不同的经验-担任IT支持人员1年(Windows管理和支持),大约2年嵌入式编程经验(VB.Net 2005),最近2年我一直在使用PHP / MySQL。我曾与Magento网上商店合作,协助Symfony进行了一些项目,并修改了一些Drupal网站。 我主要关注的问题如下: 我是否会继续提高自己的PHP技能,例如开始学习一些主要的PHP框架,例如Zend,Symfony或获得一些PHP认证。 还是开始学习.NET或Java。我对.NET更为熟悉,所以如果选择介于.NET和Java之间(或者您可以说服我选择Java :),我可能会选择它。 在职业方面,我不知道什么是最佳选择。学习新的框架和语言要花费更多的时间,然后才能提高我现有的PHP技能。但是,使用.NET,您将有很多可能性(Windows 7 Phone开发,Silverlight,WPF),并且可能有更大的机会找到更好的工作。 根据我的研究,至少与.NET相比,PHP职位的薪水较低(如果我错了,请纠正我)。但是,如果我现在开始使用.NET,我只是一个初学者,我的薪水会很低。我需要至少2年以上使用某种语言的经验,才能尝试找到一些薪水高于纽约50-60k美元的工作。在接下来的2-3年中,我的主要目标是设法找到$ 60-80k的工作。不要误会我的意思,我不仅在追逐金钱,而且在您尝试建立家庭时,金钱是重要的因素。 我今年27岁,我觉得我的职业生涯没有太多错误决定的余地,因此任何建议都将受到欢迎。 更新资料 谢谢大家花时间帮助我解决我的问题。所有的答案和评论都非常有帮助。我决定坚持使用PHP,还要学习C#和Silverlight4。我们将看看生活将带我到何处。

8
SOLID,避免贫血领域,依赖注入?
尽管这可能是与编程语言无关的问题,但我对针对.NET生态系统的答案很感兴趣。 这是这种情况:假设我们需要为公共管理开发一个简单的控制台应用程序。该应用程序是关于车辆税的。他们(仅)具有以下业务规则: 1.a)如果车辆是汽车,而车主最后一次缴税是在30天前,则车主必须再次缴税。 1.b)如果车辆是摩托车,且车主上次缴税是60天前,则车主必须再次缴税。 换句话说,如果您有汽车,则必须每30天支付一次费用;如果您有摩托车,则必须每60天支付一次费用。 对于系统中的每辆车,应用程序都应测试这些规则并打印不满足这些规则的车辆(车牌号和车主信息)。 我想要的是: 2.a)符合SOLID原则(尤其是开放/封闭原则)。 我不想要的是(我认为): 2.b)一个贫血的领域,因此业务逻辑应该放在业务实体内部。 我从这个开始: public class Person // You wanted a banana but what you got was a gorilla holding the banana and the entire jungle. { public string Name { get; set; } public string Surname { get; set; } } public …
33 c#  .net  design  architecture 

4
为什么F#具有交互模式而不是C#?
F#带有交互式REPL,开箱即用。C#没有任何种类,实际上如果不建立完整的项目就很难玩(尽管LINQpad可以工作,并且也可以通过powershell来完成)。 这些语言在本质上有什么不同,这些语言允许F#拥有交互式控制台,但是很难为C#实现它? 由于多年以后,人们仍然会提出这个问题,我应该指出,现在有很多选择。您可以使用Powershell(预装在每台现代Windows机器上)与.Net框架一起使用。或者,您可以使用LINQpad原型化任意c#代码。或者,您可以使用ScriptC,也可以使用在线jsfiddle类型的环境,例如Complify.net或Jsil。很多选择。
32 c#  .net  tools  f# 

8
字典与清单
所以我遇到了Dictionary<int, int>今天的工作。这对我来说似乎很奇怪,因为我可能会改用a List<int>。有区别吗?是否会有用例,其中一种结构优于另一种结构?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.