This topic has been archived. It cannot be replied.
-
工作学习 / 学科技术 / 节前最后一刻,写点我对Null的思考。
-oscargee(oscargee);
2015-12-24
{1290}
(#9849285@0)
-
同学,思考方向错了,Scala有一种东西叫Try Monad,不然还有Either Monad,一路到底很简单的...
-wxlin2k(wxlin2k);
2015-12-24
(#9849439@0)
-
我公司的解决方案。Consider this code:
var aList = getAListOfStrings()
if(aList.get(0).isEmpty()) {
print("The first string is empty")
}
This code can cause a NullPointerException if either the list or the first string in the list is null. We can address this by using the null-safe invocation operator ?.:
var aList = getAListOfStrings()
if(aList?.get(0)?.isEmpty()) {
print("The first string is empty")
}
The null safe invocation operator works on both methods and properties.
-sxffff(lookingforjob);
2015-12-24
{491}
(#9849521@0)
+1
-
Java的解决方案。
-sxffff(lookingforjob);
2015-12-24
(#9849546@0)
-
Try[T]是一种对错误的处理办法。当然是很优雅的处理,但是还是一种故意为之的处理。和我想法并不完全一样。如果某程序员忘记处理了呢?实际上我们大量的bug其实都出自于此。要有一种自动的方法来处理才行。
当然,scala我也是新学。我猜想是将所有的None都隐式转换成某个class的null实现。在这个SomeClass_None extends SomeClass中,忽略掉所有的操作而不出exception.
-oscargee(oscargee);
2015-12-24
{336}
(#9849538@0)
-
我说你们几个,今天有加班费吗?开玩笑啦,Merry Christmas
-poptest(▰˘◡˘▰);
2015-12-24
{25}
(#9849543@0)
-
嗯嗯,算法当酒,Merry Christmas.
-oscargee(oscargee);
2015-12-24
(#9849549@0)
-
巨汗……你把Nothing 和 None两个都混在一起了,None只对应Option Monad, Nothing 才是对应所有的类型做Bottom type
-wxlin2k(wxlin2k);
2015-12-24
(#9849619@0)
-
另外,咱别说这些了,type system和side effect 这个课题一堆phd在搞,不是这个生蛋快乐的时节应该思考的东西
-wxlin2k(wxlin2k);
2015-12-24
(#9849643@0)
-
人家喝咖啡的时候我在学东西,相信不久就能赶上的。
-oscargee(oscargee);
2015-12-24
(#9849670@0)
+1
-
现在的C都可以做到不担心空指针了,所以你就别思考这个问题了。
-arrowroot(purple);
2015-12-24
(#9849647@0)
-
绝大多数情况,抛异常比run的时候出错好太多了。有可能你会遇到try/catch的开销也要考虑的情况,但是当你用复杂的系统设计去解决的时候,很快你会发现平台升级了,而你的系统却很难简化了。
-geekcode(文心雕码);
2015-12-25
(#9850078@0)
+1
-
try/catch当然也是好的关键是某些人会忘记try/catch。我最近就修了个bug,程序崩溃了,我dig了5层调用下去,发现是有一个自定义的exception,偏偏这个自定义的还是继承了runtimeException。于是编译器不会报错。上面五层的程序员在调用这个函数的时候怎么也想不到还需要catch一下。我觉得当然不能怪他。最后当然这个异常被总的try/catch抓住了,主线程未崩溃,但这个任务无论如何是failed。这个处理只能算应急,不能说是优雅吧。一直在想怎么避免这种情况发生。我还是不怎么喜欢随便乱抛exception的做法
-oscargee(oscargee);
2015-12-26
{446}
(#9850292@0)
-
掩耳盗铃程序都会有错误。出错了,应该用返回值,错误码或者异常捕捉错误,并及时作处理
作为一个经常要维护很多代码的开发者,我最恨这种 “一行写完”风格的程序,一旦哪里有错,查找起来特别费劲
-rayleigh(rayleigh);
2016-2-12
{179}
(#9941666@0)
+1
-
你没看懂我的意思。你最恨。。。恨完了你做啥?啥也不做,还是那样继续地过日子。
你最恨的那些程序员,也许是程序员的大多数。他们就是会写那样的代码,就是会不检查null,就是会不写出错信息。那你怎么办?继续骂?
我们只是想用一种办法,就算你不检查null,就算你没写错误信息。我用一种方法来帮你检查,我用一种方法来帮你写出错信息。你比如上面讲的TRY Monad,就是一种办法。那他这个函数写完,你随便怎么调用它,都不会出错。都会记录下出错信息。那你觉得这有没有意义呢?
-oscargee(oscargee);
2016-2-12
{435}
(#9942131@0)
+1