小编vfi*_*lby的帖子

默认字符串初始化:NULL还是Empty?

我总是将我的字符串初始化为NULL,认为NULL表示没有值,""或String.Empty是一个有效值.我最近看到了更多代码示例,其中String.Empty被视为默认值或不表示任何值.这让我感到很奇怪,在c#中新添加的可空类型似乎我们通过不使用NULL来表示"无值"来向后调整字符串.

您使用什么作为默认初始化程序?为什么?

编辑:根据答案,我进一步思考

  1. 避免错误处理如果值不应为null,为什么它NULL首先设置为?也许最好在发生错误的位置识别错误,而不是在代码库的其余部分覆盖错误?

  2. 避免空检查如果您厌倦了在代码中进行空检查,那么抽象空检查是不是更好?也许包装(或扩展!)字符串方法以使它们NULL安全吗?如果你经常使用String.Empty并且null正好进入你的系统会发生什么,你是否开始添加NULL检查?

我忍不住回到懒惰的意见.如果你使用''而不是null在他的数据库中使用',那么任何DBA都会狠狠地打你九种方式.我认为同样的原则适用于编程,并且应该有人打击那些使用String.Empty而不是NULL代表没有价值的人.

相关问题

c#

127
推荐指数
6
解决办法
14万
查看次数

您如何衡量单元测试的质量?

如果您(或您的组织)希望对您的代码进行彻底的单元测试,那么您如何衡量您的成功或质量?

  • 您是否使用代码覆盖率,您的目标是多少?
  • 您是否发现像TDD这样的哲学比指标有更好的影响?

testing tdd unit-testing

36
推荐指数
8
解决办法
9906
查看次数

成功使用Devise登录后,我可以执行自定义操作吗?

我有一个具有基本Devise身份验证的应用程序.登录后,我想查找用户帐户(用户belongs_to帐户,帐户has_many用户),并将其存储在会话中,以便它可用@current_user.

这样存储会话的轨道方式是什么?在成功登录后,我可以使用Devise来执行代码吗?

ruby devise ruby-on-rails-3

21
推荐指数
4
解决办法
2万
查看次数

在不同的控制器中渲染表单部分(不嵌套)

我有两个生成脚手架的模型,一个是LogBook,另一个是LogEntry.我想在LogBook显示页面上为LogEntry渲染部分表单.当我在局部调用渲染时,我收到此错误:

undefined method `model_name' for NilClass:Class
Run Code Online (Sandbox Code Playgroud)

我假设这是因为默认_form使用的实例变量在从单独的控制器调用时不存在.所以我尝试将LogEntry _form.html.erb转换为使用局部变量并通过render调用传递它们.在此之后是错误:

Model LogEntry does not respond to Text
Run Code Online (Sandbox Code Playgroud)

如何将此部分包含在显示页面中,形成不同的控制器?

楷模:

class LogBook < ActiveRecord::Base
  belongs_to :User
  has_many :LogEntries, :dependent => :destroy
end

class LogEntry < ActiveRecord::Base
  belongs_to :LogBook, :class_name => "log_book", :foreign_key => "log_book_id"
end
Run Code Online (Sandbox Code Playgroud)

LogEntry _form.html.erb(使用局部变量):

<%= form_for(log_entry) do |f| %>
  <% if log_entry.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(log_entry.errors.count, "error") %> prohibited this log_entry from being saved:</h2>

      <ul>
      <% log_entry.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails partials ruby-on-rails-3

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

使用svcutil映射多个名称空间以生成wcf服务代理

我想在生成服务代理时使用svcutil将多个wsdl命名空间映射到clr命名空间.我使用名称空间的强版本,因此生成的clr名称空间很笨拙,如果wsdl/xsd名称空间版本发生变化,可能意味着许多客户端代码更改.一个代码示例可以更好地显示我想要的内容.

// Service code
namespace TestService.StoreService
{
    [DataContract(Namespace = "http://mydomain.com/xsd/Model/Store/2009/07/01")]
    public class Address
    {
        [DataMember(IsRequired = true, Order = 0)]
        public string street { get; set; }
    }

    [ServiceContract(Namespace = "http://mydomain.com/wsdl/StoreService-v1.0")]
    public interface IStoreService
    {
        [OperationContract]
        List<Customer> GetAllCustomersForStore(int storeId);

        [OperationContract]
        Address GetStoreAddress(int storeId);
    }

    public class StoreService : IStoreService
    {
        public List<Customer> GetAllCustomersForStore(int storeId)
        {
            throw new NotImplementedException();
        }

        public Address GetStoreAddress(int storeId)
        {
            throw new NotImplementedException();
        }
    }
}

namespace TestService.CustomerService
{
    [DataContract(Namespace = "http://mydomain.com/xsd/Model/Customer/2009/07/01")]
    public class Address
    { …
Run Code Online (Sandbox Code Playgroud)

wcf svcutil.exe

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

使用Powershell更改IIS站点主目录

我可以查询AD并找到所有IIS站点及其虚拟目录,现在我需要能够更新这些主目录并保存更改.

在我获取目录条目后,我可以使用显示站点路径$site.Path,但设置它似乎没有任何影响.它永远不会改变实际存储的路径.

我试过了$site.Path = <new path>,$site.Put( "Path", <new path> )但这些似乎都没有影响存储的路径.

    $site = $iis.psbase.children | 
        where {$_.keyType -eq "iiswebserver"} | 
        where {$_.psbase.properties.servercomment -eq $siteConfig.name };

    $s = [ADSI]($site.psbase.path + "/ROOT");
    $s.Path
    # $s.Path = $siteConfig.path
    # $s.Put("Path", $siteConfig.path )
    $s.psbase.CommitChanges()
Run Code Online (Sandbox Code Playgroud)

iis powershell

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

使用ASP.NET成员资格提供程序限制对WCF REST(webHttpBinding)服务的访问?

我在Web上发现了很多关于将ASP.NET成员资格提供程序与wsHttpBindings一起使用的资料,但我没有看到任何与webHttpBindings一起使用它的参考资料.

我正在寻找一个可以在两种情况下工作的系统:

  1. 用户登录到asp.net网站,该网站正在调用该服务.
  2. 用户通过REST直接访问服务.

这可能是使用内置框架(即只是通过配置)?如果是这样,我该如何配置服务?用户如何将凭据传递给REST服务?

asp.net rest wcf web-services webhttpbinding

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

适用于.Net的良好嵌入式数据库解决方案(如SQLite)

我正在寻找可以与.Net项目一起使用的基于文件的存储解决方案.它需要一个类似sql的接口来存储和检索数据.它们需要相对较少的开销,并且不需要最终用户安装任何其他组件.我正在跳一个我可以参考和使用的.dll.如果与ORM密切相关,则奖励积分.

我目前最喜欢的是SQLite,那里有哪些更好的我应该知道的?

我有一种(健康?)对访问的偏见,因为我觉得它对于我需要的东西而言过于复杂,但我仍然愿意相信.

PS:"不,没有什么比SQLite更好"是一个非常好的答案.

sql database sqlite embedded-database

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

我可以使用反射来查找ASP.NET中的bin/[Configuration]文件夹而不是asp临时文件夹

我有一个ASP.NET网站,我想找到/ bin/[Configuration]文件夹来使用外部工具(exe文件).当我使用反射获取调用程序集位置时,它返回类似于:

C:\Windows\Microsoft.NET\Framework\\...\Temporary ASP.NET Files\a1388a5e\\...\my.dll

由于每个dll在临时ASP.NET文件下都有自己的目录,因此对我来说失败了.

如何获取已编译的二进制文件夹的位置,其中dll和.exe是(即bin /)而不是asp.net的临时缓存?

笔记

  • 此代码位于支持库中,可以从ASP.NET网站或其他控制台/ Windows应用程序调用.

c# asp.net reflection

6
推荐指数
1
解决办法
4563
查看次数

salesforce.com是否有可识别DST的时区字段?

我正在向潜在客户邮寄提醒,并且时间转换为我们的服务器时区EST(我认为它目前正在使用EDT,但视情况而定).我需要为潜在客户存储时区并将时间转换为当前时区.

我可以存储偏移量,但我担心夏令时.我总是可以存储非DST偏移量,但是当在DST之前安排注册约会但在DST之后发生时会导致问题.

理想情况下,我想存储一个时区,并让salesforce将日期时间转换为该时区,以便在必要时将DST计算在内.我怎样才能做到这一点?

salesforce

6
推荐指数
1
解决办法
5174
查看次数