2017-02-13 42 views
0

Я хотел бы написать чистый и быстрый код для оценки некоторого состояния, выполнить действие, если условие было истинным и вернуть это значение условия.java if action и return

я следующие варианты до сих пор:

Вариант 1:

public boolean method() { 
    if (...condition...) { 
     action(); 
     return true; 
    } else { 
     return false; 
    } 
} 

Вариант 2:

public boolean method() { 
    boolean actionNecessary = ...condition...; 
    if (actionNecessary) { 
     action(); 
    } 
    return actionNecessary; 
} 

Вариант 3:

public boolean method() { 
     return ifDoReturn(...condition...,() -> { 
      action(); 
     }); 
    } 

С вспомогательным методом:

public static boolean ifDoReturn(boolean condition, Runnable action) { 
    if (condition) { 
     action.run(); 
    } 
    return condition; 
} 

Первым вариантом является самым длинным, то вторым короче и также быстро, третьим самым коротким, но сложен и без оптимизации компилятора также медленным.

Спасибо за любую помощь

+0

Это зависит от многих факторов. Есть ли у вашей компании стандарт? Кто будет поддерживать? Это одноразовая программа? Хорошего ответа нет, потому что это зависит от конкретного случая. – AntonH

+0

Второй - легкий и читаемый. Используй это. – f1sh

+0

Да, но, возможно, подходящее имя для вспомогательного метода может значительно помочь. – Swocka

ответ

1

«Преждевременная оптимизация есть корень всех зол». - Дональд Кнут

Я считаю, что вы слишком задумываетесь об этом. JVM достаточно умен, чтобы обрабатывать тривиальные «микро-оптимизации». В простой логике if...else обычно следует следовать стандартам разработки программного обеспечения, изложенным их командой. Вам будет трудно найти заметную прирост производительности независимо от вашего подхода. Если код вызывается часто, компилятор Just-in-Time («JIT») в любом случае скомпилирует его с объектным кодом.

Что все сказано, по моему мнению, вариант № 2 является самым ясным.

Для чего это необходимо, here - это более глубокое исследование методов оптимизации Java; самое главное, покрытие , когда и зачем оптимизировать.

+0

Спасибо всем, кто голосовал за # 2. Во всяком случае, я пропускаю больше синтаксического сахара, чтобы хорошо выражать такие общие шаблоны на Java. Я принимаю этот ответ, потому что это ответ, написанный как ответ :). – Swocka

+0

Ознакомьтесь с книгами «Эффективная Java» Джошуа Блоха и «Чистый код» Роберта Мартина. Большинство команд Java, заслуживающих их соли, должны следовать этим правилам. – Keith