Как правильно написать “if else” в теле “for” без повторений

223
08 марта 2018, 10:05

Мой код ревьювер сказал, изменить текущий так как он не соответсвует принципу "Don't repeat yourself" en.wikipedia.org/wiki/Don%27t_repeat_yourself Конструкцию if else надо изменить. Технология ".vm", java apach velocity template, но думаю это не очень важно.

#set($first = "true")
#foreach($item in $data)
    #if($first == "true")
        <div class="tabs first" id="$item.get('Key')">
        #set($first = "false")
    #else
        <div class="tabs" id="$item.get('Key')">
    #end
        <h1>str1</h1>
        <h1>str2</h1>
        <h1>str3</h1>
    </div> ##//Close div created in (if else)
#end 
Answer 1
<div class="tabs 
#if($first == "true")
     first
    #set($first = "false")
#end
" id="$item.get('Key')">

Но, на мой взгляд, это типичный пример принесения читаемости кода в жертву догматическому следованию "принципу".

Answer 2

Признак первого элемента при переборе можно получить из переменной $foreach: $foreach.first

Следовательно код может принять вид:

#foreach($item in $data)
    <div class="tabs #if($foreach.first) first#end" id="$item.get('Key')">
        <h1>str1</h1>
        <h1>str2</h1>
        <h1>str3</h1>
    </div> ##//Close div created in (if else)
#end 
Answer 3

Можно попробовать упростить до:

#set($first = "first")
#foreach($item in $data)
    <div class="tabs $first" id="$item.get('Key')">
        ...
    </div>
    #if($first == "first")
        #set(first = "")
    #end
#end

не знаком с этим языком шаблонов, поправьте. Идея ясна должна быть

READ ALSO
как избавиться от &amp;nbsp; из Html рассылки?

как избавиться от &nbsp; из Html рассылки?

Сверстал рассылку на фреймворке foundation for emailsОтступы там задается с помощью spacer'а т

248
Показ, обновление товара при клике, не перезагружая строницу? [требует правки]

Показ, обновление товара при клике, не перезагружая строницу? [требует правки]

Помогите реализовать такую штуку ,ломаю голову уже очень долго

264
how to open popup from zero block with button tilda? [требует правки]

how to open popup from zero block with button tilda? [требует правки]

Trying to open popup window with form from zero blockIf its not possible, may be I can do it by adding html code?

447