2016-10-24 5 views
1
public boolean sendDeviceEvent() { 
    boolean status = false; 
    try { 
     device.sendEvent("blah...blah"); 
     status = true; 
    } catch (Exception e) { 
     log.error("Failed to send NodeLowBattery Event - {} {}", createNodeLowBatteryNotification(), e.getCause()); 
    } finally { 
     return status; 
    } 
} 

Я хотел бы знать, как приведенный выше код можно считать плохой практикой, так как он возвращается с окончательного. На основе информации о байтовом коде, наконец, не возвращается внезапно, и в конечном итоге значения не задаются. Как это можно считать плохим?Мнения на, наконец, на Java

+4

В чем смысл «наконец» здесь? Вы можете просто вернуть статус после улова. – AntoineB

ответ

4

Дело в том, что окончательное утверждение просто не имеет никакого смысла. Он добавляет no значение вашего кода. Эта версия:

try { 
... 
return true; 
} catch (...) { 
log ... 
} 
return false; 

делает то же самое; не заставляя вас задуматься: что это такое наконец хорошо?

Другими словами: не следует слишком повесить трубку на функциональность; и забудьте о читаемость. Вы хотите понять, что происходит, как можно быстрее. Использование , наконец,, безусловно, сделает ваш «мозговой процессор» более «трудным» ... просто потому, что вы должны его прочитать, а затем переварить и решить «ах, на самом деле мне это совсем не нужно».

Конечно, это очень тонко; но в конце: файл, полный тонких вещей, которые могут быть немного яснее ... все равно составляет файл, который гораздо труднее читать, чем это должно быть!

Наконец: не поймите меня неправильно: могут быть случаи, когда возвращение из блока finally может иметь смысл. Но - только тогда, когда в этом блоке происходят другие вещи (это значит, что есть real, так или иначе).