检查某物是否为假的首选编码方式是什么?
给定以下内容: bool isCorrect = theAnswer == 42; C#中的Boolean Logic的首选方法是C#(一般编程)? if (!isCorrect) // throw exception 或 if (isCorrect == false) // throw exception 我问的原因是因为我们工作的高级开发人员表明,我们应该始终使用后一种方法,因为它可以增强可读性并确保其他开发人员可以清楚地看到错误的检查;感叹号很容易错过.我更喜欢前者,因为它对我来说更简洁和足够. 我知道这可能是一个主观的问题,所以想知道是否有任何编码样式提到的具体偏好. 解决方案 我已经看到了包含此类代码的高级开发人员的生产代码: if (isCorrect.ToString().Length == 5) ,但我仍在使用: if (!isCorrect) 使用您认为更可读的内容,所有开发人员之间都没有统计数据)
2 2024-04-25
编程技术问答社区
在一个使用块中关闭连接
在阅读大量代码时,我发现在using语句中手动关闭了实现IDisposable的给定Connection对象.当我看到与MySQL相关的代码时,我会看到这一点. 不需要明确关闭.开发人员为什么要手动关闭它? using(cnn) { //code is here cnn.close(); } 这是一个很好/有用的措施吗? 解决方案 在using块中明确关闭是重复,误导性和冗余,所以对我来说,是 bad thice. 其他解决方案 这取决于连接.许多人以处理方法结束了自己.例如,sqlconnection在处置中关闭自身. 其他解决方案 我认为实施IDisposable的对象应该清理自己的资源,而不需要接近是合理的.现在,它可能不会像您可能想要的那样快,因此您会自己手动关闭它们,但是您不会使用using语法.
0 2024-04-25
编程技术问答社区
让丑陋的SQL查询在C#中工作
我试图从数据库中的几个表中获取一系列值. 我目前有此代码工作: SqlDataReader reader = null; SqlCommand myCommand = new SqlCommand("select * from ods_LN_Master", xavierConnection); reader = myCommand.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader["LMBKNO"].ToString()); } 但是,我真正想做的SQL查询看起来像这样: select "T1"."C0" AS "Collateral Type", "T1"."C1" AS "Owner Occuppied", "T1"."C2" AS "County Name", "T1"."C3" AS "Region Description", "T1"."C4" AS "City",
2 2024-04-25
编程技术问答社区
流利的API和方法链式的使用方法
针对流利的API进行编程或仅使用方法链接时,我已经看到了类似的样式: var obj = objectFactory.CreateObject() .SetObjectParameter(paramName, value) .SetObjectParameter(paramName, value) .DoSomeTransformation(); 将点放在线的开头而不是这样的线的末端是什么原因: var obj = objectFactory.CreateObject(). SetObjectParameter(paramName, value). SetObjectParameter(paramName, value). DoSomeTransformation(); 或者,这仅仅是团队在吗? 上达成共识的样式. 解决方案 这只是一种样式的东西. 放置.在生产线的开头是快速看出这不是独立的方法调用.
0 2024-04-23
编程技术问答社区
为什么喜欢var strList = new List<string>(); 而不是List<string> strList = new List<string>();?
为什么在创建对象时,更喜欢使用 var 关键字而不是真实类型? var strList = new List(); //good? List strList = new List(); //why bad? 问题不仅是List. 解决方案 不是var是好的,另一个是坏的.这是一种个人喜好. 如果您希望我更具体,我认为您只有在类型完全明显的情况下才能使用var,例如: var employee = new Employee(); 在另一边,这可能是一个可怕的想法: var e = GetEmployees(); 因为很难说e是e是Employee对象还是列表,数组等. 当它节省您的精力而又不会降低可读性时,也可能是正确的使用: ReallyLongClassName someidentifier = new ReallyLongClassName(); vs var
8 2024-04-23
编程技术问答社区
如何根据使用情况对类中的函数自动排序?
a)罗伯特·马丁(Robert C. 我们希望代码像自上而下的叙述一样阅读.我们想要每个 在下一个抽象级别的功能之后, 我们可以阅读该程序,在某个方面降下一个抽象 当我们阅读功能列表时,时间.我称之为迈 规则. b) pycharm允许在结构视图中显示字母顺序的顺序.另请参阅可以字母顺序排列吗? 因此,无需按字母顺序手动对函数进行分类,我可以将班级的功能顺序用于不同的目的. c)到目前为止,我手动通过其使用/抽象级别/呼叫堆栈对它们进行分类. (我还将静态功能和公共功能放在顶部,并以" _"开头的功能.我将属性放在功能下. d)而不是通过其用法/抽象级别/呼叫堆栈手动分类函数,我更喜欢一种类似于black的工具(不幸的是,黑色black a href =" https://github.com/psf/black/issues/3029" rel =" nofollow noreferrer">不排序函数),进行格式化/分类工作自动自动对我们进行保存动作. (相应的单
12 2024-04-23
编程技术问答社区
"代理属性 "是好的风格吗?
我有一个带有字符串属性的课程,实际上是几个带有分隔符的字符串. 我想知道拥有这样的代理属性是否很好: public string ActualProperty { get { return actualProperty; } set { actualProperty = value; } } public string[] IndividualStrings { get { return ActualProperty.Split(.....); } set { // join strings from array in propval .... ; ActualProperty = propval; } } 我忽略了任何风险吗? 在我看来, 解决方案 将两个可设置的属性链接在一起是不好的Juju.切换到使用显式获取/设置方法,而不是属性,如果您确实需要的话.具有非显
0 2024-04-22
编程技术问答社区
财产的命名惯例
哪一个是可取的或更清晰的? public int FrozenRegionWidth { get; set; } 或... public int WidthOfFrozenRegion { get; set; } 解决方案 我会说FrozenregionWidth,否则您最终会以" widthof"开头的一大堆属性. 话虽如此,您不应该有类似冷冻区的东西. 其他解决方案 我更喜欢冰冻的区域. 有关更多信息,请参见.NET框架命名指南,请访问其他解决方案 我不确定这是否是这个社区的问题.我相信这对您的团队来说一定是一个问题. 如果我只是一个团队的开发人员,我必须选择一个名称,我将创建一个带有宽度属性的冷冻区.
2 2024-04-21
编程技术问答社区
如何在没有接口的情况下模拟多重继承?
如何在不使用接口的情况下模拟C#中的多个继承.我确实相信,界面功能并非用于此任务.我正在寻找更多以"设计模式"为导向的方式. 解决方案 ECMA-334,第8.9节接口 ... 接口可以使用多个继承. 因此,对于c#(有限)对"多元继承"的支持,接口是官方方法. 其他解决方案 就像Marcus所说的使用接口 +扩展方法制作Mixins这样的东西可能是您目前最好的选择. 另请参见: using System; public interface ISwimmer{ } public interface IMammal{ } class Dolphin: ISwimmer, IMammal{ public static void Main(){ test(); } public static void test(){ var Cassie
2 2024-04-21
编程技术问答社区
Try/Catch使用公约
在明显需要的位置(例如获取特定用户输入)之外的尝试/捕获的约定是什么?虽然代码重复使用是OOP背后的一个重要想法,但是否期望每个(示例)阵列访问都应该尝试/捕获?这主要是设计师决定什么可以抛出例外的决定,并且该程序的那些部分应该受到足够的监管,以免施加异常? ex.一系列扑克牌是,应该永远是52张卡片.无需尝试/捕获. 或由于范围异常的数组可能会导致运行时错误,并且可以在以后与添加的Jokers一起使用甲板,然后将其放入现在? 解决方案 您的示例有点不合时宜. 假设您的数组为52个元素,正确处理此操作的正确方法是测试您的索引是否在尝试访问它之前甚至在数组的范围内.这比简单地将代码缠绕在那里要好得多. . 尝试捕捞可以帮助我们避免自己.如果给定方法正确编码,则很少有理由使用它们.正确地说,我的意思是您验证您的输入在预期的范围内,并且已经进行了足够的测试,以了解代码不会"除外".当然,"很少"的示例包括对不受管理的资源(例如SQLConnection对象)的呼叫.
2 2024-04-21
编程技术问答社区
什么是方法中 "返回 "的完美写法?
我不喜欢方法有几条返回线.因此,我创建了一个带有字符串结果的返回值 - 并且在每个条件下,我都写入结果=某种... 但是,当我编写" try-catch"机制时,我必须设置 public string result .因为,如果我在尝试中返回结果,编译器将启动错误,并说并非所有代码都有返回值. Resharper说,如果我编写 result = string.empty 要结束方法,这不是可符合的代码.所以,这里是一个例子,这是我的问题; "在方法中写入"返回"的完美方法是什么?" public static string PingThatAddress(string hostAddress) { try { Ping ping = new Ping(); PingReply pingreply = ping.Send(hostAddress); s
4 2024-04-20
编程技术问答社区
C#局部变量和实例变量的正确命名规则是什么?
我公司有很多前Java开发人员,他们在C#中使用骆驼外壳.什么套管最广泛地接受/用于C#? 解决方案 ,这是通过Brad Abrams的内部准则(覆盖所有内容,而不仅仅是亮点) 其他解决方案 ...和这个... 编辑:这应该是新链接,存档 - 其他解决方案 最常见的外壳是camelCasing. Microsoft .NET框架参考指南,要求方法参数是在骆驼上,因为这些参数就像局部变量一样,我会一样对待它们.
16 2024-04-20
编程技术问答社区
内部应用--为什么不把一切都公开呢?
有什么原因为什么我不应该在我们的Intranet报告应用中标记所有内容? 没有人可以访问此代码 - 我们有大约20个项目 - 大多数小而特定. 我们是否应该标记公众以外的其他任何事物的原因吗? 我对此有自己的想法,因为我希望这是公正的. (我稍微分配了标题) 解决方案 查找封装和/或"信息隐藏" :: 在面向对象的编程中,信息隐藏(通过类型的嵌套方式)通过将代码对不确定实现(设计决策)的依赖性转移到定义明确的界面中来降低软件开发风险.界面的客户端纯粹通过它执行操作,因此,如果实现发生了变化,则客户不必更改. 如果您将每个班级的成员都标记为公众,那么您正在做一场维护噩梦,未来的开发人员(包括您自己)不确定班级的哪些部分是永久的(合同),哪些是纯粹的实施细节. 其他解决方案 假设您是指将类成员/方法标记为公共/私人:从您组织外部的某人获得访问"私人"信息的意义上,这与安全无关.这是关于教授编译器如何检测问题. 例如,假设我有一个Acc
6 2024-04-20
编程技术问答社区
关于尝试抓取块的思考
您对看起来像这样的代码有何看法: public void doSomething() { try { // actual code goes here } catch (Exception ex) { throw; } } 我看到的问题是实际上没有处理实际错误,只是将异常放在另一个位置.我发现调试更加困难,因为我不会在实际问题所在的位置获得线号. 所以我的问题是为什么这会很好? ----编辑---- 从答案看来,大多数人都说这样做是毫无意义的,而没有被捕获的习俗或特定例外.这就是我想要的评论,当时没有捕获具体的例外.我可以看到实际上做某事的重点,而不是该代码的方式. . 解决方案 取决于您所看的质量,并没有将异常放在其他地方.没有目标的"投掷"异常,这与抛出异常大不相同.主要是rethrow不会重置堆栈跟踪. 在这个特定的样本中,捕获是毫无意义的,因为它无能为力.这个例外
4 2024-04-20
编程技术问答社区
'using'应该在命名空间内部还是外部?
可能的重复: 是否应该在命名空间内或外部使用 是否有任何技术原因更喜欢此 namespace Foo { using System; using System.IO; 而不是默认 using System; using System.IO; namespace Foo { 解决方案 eric lippert 解释这一点 . 通常,它们相同. 但是,命名空间中的using语句可以看到名称空间和名称空间外包含的别名. 其他解决方案 几乎*两者之间的唯一区别是,如果您在同一文件中使用了一个以上的名称空间(或者如果您使用相同的名称空间多次使用).我不确定你为什么要这样做,你当然可以: using System; namespace FooNamespace { using System.IO; class Foo { // you can use types from Syste
4 2024-04-19
编程技术问答社区
是否有可能将代码后台分解成多个部分文件?
我有一个.aspx Web表单,带有.aspx.cs代码.代码行为长度将近2000行,它到达了一个轻松导航的唯一方法是在各节之间放置大量空间,缩小,以便我可以看到代码的物理外观,并且然后放大我要编辑的位置.换句话说,这是一个主要的痛苦.我想将这条2000行分为代表代码中概念的不同文件.因此,当我需要在页面的"员工" jQuery选项卡中编辑一些功能时,我可以转到只包含"员工"功能的部分类. 在"新项目"菜单中,我找不到其他代码文件,否.aspx.cs文件.我尝试创建一个.cs文件,将其重命名为.aspx.cs,并给它提供相同的部分类名称-----不,我看不到默认部分类的任何方法,也看不到任何控件页. 我理解这样的概念,即如果您的"班级"这么长,那就太长了,那就做得太多了.我不明白的是网络表单的代码范围内的"类".表格实际上不能分解为较小的形式 - 用户体验都需要在一页上进行. 解决方案 您可以使用部分类别.因此,将新的.cs文件添加到您的项目并使用部分类别. 例
2 2024-04-19
编程技术问答社区
在try/finally之外或之内初始化可抛弃的资源
我已经看到了两种获取和处置资源的方法.两者: Resource resource = getResource(); try { /* do something with resource */ } finally { resource.close(); } 或: Resource resource = null; try { resource = getResource(); /* do something with resource */ } finally { if (resource != null) resource.close(); } 我想知道哪种样式是可取的.第一个避免了if条件,而第二个(我假定)在分配后但在输入try块之前就处理线程中止的情况.这些样式彼此之间还有哪些其他优点和缺点?我最好使用哪一个? 解决方案 在C#中,只需使用使用语句: using (Resource resource = GetResource()) {
6 2024-04-19
编程技术问答社区
Visual Studio的代码对齐扩展
是否有任何免费扩展以执行代码对齐,例如 与生产力工具对齐作业 ,但要对齐此代码: public int ID; public string Title; public string Text; public decimal Factor; 以这种方式或类似的方式? public int ID; public string Title; public string Text; public decimal Factor; 解决方案 正如Pop Catalin所说,代码对齐是您所追求的.这是我的扩展名,很抱歉没有太多的文档.用视频进行解释要容易得多,但我仍然要解决. 当您对字符串对齐时,它会找到字符串的第一个实例并将它们对齐.例如,如果要输入'=',则 foo = bar; foobar = foo; 将成为 foo = bar; foobar = foo; 但是,您的代码没有共同的定界符 - 除了之前的空间.因此,您
4 2024-04-19
编程技术问答社区