问题列表 - 第2695页

多少空检查就足够了?

什么是什么时候没有必要检查空?

我最近一直在研究的许多继承代码都有空检查令人作呕.Null检查普通函数,对表示非空返回的API调用进行空检查等.在某些情况下,空检查是合理的,但在许多地方,null不是合理的期望.

我听过很多论点,从"你不能相信其他代码"到"总是防守程序"到"直到语言保证我的非空值,我总会检查." 我当然同意这些原则中的许多原则,但我发现过多的空值检查会导致其他通常违反这些原则的问题.顽强的空检查真的值得吗?

通常,我观察到过多的空检查代码实际上质量较差,而不是质量较高.许多代码似乎都专注于空检查,开发人员已经忽略了其他重要的特性,例如可读性,正确性或异常处理.特别是,我看到很多代码忽略了std :: bad_alloc异常,但对a进行了空检查new.

在C++中,由于解除引用空指针的不可预测行为,我在某种程度上理解这一点; 在Java,C#,Python等中更优雅地处理null dereference.我刚刚看到了警惕的空检查的不良例子,还是真的有什么东西可以解决这个问题?

这个问题旨在与语言无关,尽管我主要对C++,Java和C#感兴趣.


我见过的一些空检查的例子似乎过多,包括:


这个例子似乎是非标准编译器的原因,因为C++规范说失败的新抛出异常.除非您明确支持不合规的编译器,否则这有意义吗?这确实让任何意义的,如Java或C#(甚至C++/CLR)托管语言?

try {
   MyObject* obj = new MyObject(); 
   if(obj!=NULL) {
      //do something
   } else {
      //??? most code I see has log-it and move on
      //or it repeats what's in the exception handler
   }
} catch(std::bad_alloc) {
   //Do something? normally--this code is wrong as it allocates
   //more memory and will likely fail, such as writing to a log file.
} …
Run Code Online (Sandbox Code Playgroud)

c# c++ java design-by-contract

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

JQuery tablesorter问题

我在使用JQuery tablesorter插件时遇到了一些问题.如果单击列标题,则应按此列对数据进行排序,但存在以下几个问题:

  1. 行未正确排序(1,1,218,236)
  2. 总行包含在排序中

关于(2),我不能轻易地将总行移动到表格页脚,因为HTML是由displaytag标记库生成的,我对其进行了有限的控制.

关于(1),我不明白为什么排序不起作用,因为我使用了在tablesorter教程中最简单的例子中显示的完全相同的JavaScript .

实际上,只有一行JS代码,它是:

<body onload="jQuery('#communityStats').tablesorter();">
Run Code Online (Sandbox Code Playgroud)

唐先生,提前谢谢

html javascript sorting jquery tablesorter

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

计算加州销售税

我正在开发的一个网络应用程序有一个相当小的网上商店/购物车.由于客户公司实际位于加利福尼亚州并且在那里有实际位置,因此他们需要对运往加利福尼亚州的所有订单征收CA销售税.

对于那些不知道的人,CA有一些相当复杂的销售税规则,基本上,任何本地集团都可以创建一个"税区",并在全州7.25的基础上利用额外的几美分销售税. %.(通常不到1%额外.)这些地区不必映射到任何其他立法边界,因此您可以最终支付半个城市支付额外.25%的销售税.

从技术上讲,法律只要求您作为卖方收取您所在地的销售税率 - 因此,如果我在萨克拉门托有一家商店,我只需要对所有发货的订单收取萨克拉门托销售税.

但是,出于各种会计和纳税申报的原因,实际上更容易对订单运送的地点征收销售税.(这意味着可能会对每个订单征收不同的销售税.)

所以 - 我的问题.是否有人知道任何光滑的方法来计算这个?实际工作所需的数据在州均衡委员会网站上以各种半有用的格式提供,我们正在将一个小部件组合在一起,试图根据城市名称和城市名称来计算销售税.邮政编码.但是,我想知道是否有人遇到任何很酷的工具来解决这个问题.(或任何工具,就此而言.)

(我们正在使用VB和ASP.net,但我对任何语言的解决方案感兴趣,主要是因为我很高兴看到其他人如何解决这个问题.)

附录 - 回答以下问题:

蒂姆问这怎么可能"更容易".我被告知以这种方式缴纳销售税可以简化您的纳税申报表.我对细节很不满,但据我了解,如果你不收取运费地点的费率,你必须证明为什么你没有为年底的每一个订单 - 即你必须证明不,我们住在这里而不是那里,所以我们在这里收费.

如果你总是收取目的地费率,你可以(显然)只是在一行中记下你在全年收集的销售税总额,并说"销售税是这么多.

看起来国家并不关心你做了什么.因此,通过"更容易",我的意思是"会计师更容易" - 这对我们编程团队来说当然不容易.

此外,Schnapple的德克萨斯故事是一个潜在的解决方案.(事实上​​,我今天上午提出了这个想法.)CA真的不在乎你是否多收了销售税,只要你不收取任何费用并交出你收集的所有东西.这里的问题是,与德克萨斯州(显然)不同,大部分的CA都不在特殊的税区.因此,虽然我们可以为每个人收取最高级别​​(我认为目前为8.75),但大多数客户会介意不按正常速度7.25播放.我想我不能责怪他们.

shipping sales-tax

11
推荐指数
0
解决办法
4997
查看次数

为什么Visual C++没有遇到断点,或者单步执行某个特定的函数?

我有以下内容:

classA::FuncA()
{
 ... code
   FuncB();
 ... code
}

classA::FuncB(const char *pText)
{
    SelectObject(m_hDC, GetStockObject (  SYSTEM_FONT)); 
    wglUseFontBitmaps(m_hDC, 0, 255, 1000); 
    glListBase(1000); 
    glCallLists(static_cast<GLsizei>(strlen(pText)), GL_UNSIGNED_BYTE, pText); 
}
Run Code Online (Sandbox Code Playgroud)

我可以在FuncA的任何地方点击断点.如果我尝试进入FuncB,它会跳过.它将接受FuncB中的断点,但永远不会命中它.我知道它正在执行FuncB,因为我可以在FuncB中放入一个MessagBox()调用并获取消息框.

在远离广泛的VC6使用几年后,我是VS2005的新手.我记得VC6时代的这种情况,如果没有符号信息.但是,在这种情况下,两个函数都在同一个文件中,因此符号信息必须正确.同样在那种情况下,我认为你甚至无法设置断点.

我尝试过所有愚蠢的伏都教,就像重建整个解决方案一样.

我忽略了什么愚蠢的事情?

编辑:添加了FuncB的代码,以回应关于它可能基本上是内联的评论.(这只是来自MSDN的wglUseFontBitmaps的确切示例代码[此处为减号]).我不知道内联是如何妨碍逐步完成每次通话的.

c++ breakpoints visual-studio

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

多线程访问文件

我们有一个多线程的java程序.多线程将写入文件,一个线程将从该文件读取.我正在寻找一些设计理念.同步是否必要?

java multithreading

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

在代码中从c#调用网页

我需要一种从我的.net应用程序中调用网页的方法.

但我只想向页面发送请求而不用担心响应.

因为有时候响应可能需要一段时间,所以我不希望它挂起应用程序.

我一直在尝试使用page_load事件

WebClient webC = new WebClient();
Uri newUri = new Uri("http://localhost:49268/dosomething.aspx");
webC.UploadStringAsync(newUri, string.Empty);
Run Code Online (Sandbox Code Playgroud)

即使它设置为Async,它仍然会挂起,因为页面不会完成渲染,直到线程已经完成

c# asp.net .net-2.0

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

Rails:如何检查列是否有值?

我怎么能做到这一点?

<% for agent in @broker.agents %>
  ...
  <% if agent.cell %><span class="cell-number">Cell: <%= agent.cell %></span><% end %>
  ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

我想测试代理是否有一个单元格编号,如果是,则显示条件内的内容.我目前所做的似乎不起作用; 它只显示"Cell:".

思考?

ruby database ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

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

我可以在rails模型中使用define_method吗?

我的rails模型具有试图define_method(method_name)进入模型内部的代码.

我一直在:

NoMethodError: undefined method `define_method'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我是在错误的地方做这件事吗 我需要附加到此模型的此方法.我还能在哪里定义这种方法?

编辑:对于那些要求查看代码的人:

for field in rdev_fields
  next if self.attributes.include?(field)
  count = count + 1
  rdev_hash[field.to_sym] = self.attributes["attribute#{count}"]
  if !self.respond_to?(field) then
    define_method("#{field}") do
      self.send("attribute#{count}".to_sym)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

使用代表的好处?

我想在VB.NET或C#或其他一些.NET语言中实现Observer模式.我听说代理可以用于此,但无法弄清楚为什么它们比观察者实现的普通旧接口更受欢迎.所以,

  • 为什么我应该使用委托而不是定义我自己的接口并传递对实现它们的对象的引用?
  • 为什么我要避免使用委托,并使用良好的ol-fashioned接口?

.net delegates design-patterns

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

.NET 3.5图表控制异常:执行ChartImg.axd的子请求时出错

任何人在使用新的免费图表时都会收到此错误控制从Dundas购买的MS?

"执行ChartImg.axd的子请求时出错"

在MSDN论坛上,他们建议这是我的web.config: MSDN论坛帖子

到目前为止,还没有解决问题.还有其他想法吗?

.net charts .net-3.5

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