Модераторы: korob2001, JackYF, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рефакторинг кода 
:(
    Опции темы
sklins
Дата 10.2.2014, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 27.9.2012

Репутация: нет
Всего: нет



Занимаюсь рефакторингом кода, и не даёт мне покоя такой кусок кода:
Код

if ($self->{results}{correct_answer_percent} > $percent_5) {
  $self->{results}{evaluation} = 'Отлично';
} elsif ($self->{results}{correct_answer_percent} > $percent_4) {
  $self->{results}{evaluation} = 'Не плохо';
} elsif ($self->{results}{correct_answer_percent} > $percent_3) {
  $self->{results}{evaluation} = 'Слабовато';
} else {
  $self->{results}{evaluation} = 'Никуда не годится';
}

Как его лучше отрефакторить и повысить читабельность? Просто много такого кода встречается в модуле и он распух и плохо читаем. Хотелось бы данный код заменить чем то более элегантным и лёгким.
PM MAIL   Вверх
Сумасшедший
Дата 10.2.2014, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чилавек-Каропка
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 15.8.2004
Где: Мурманск

Репутация: 1
Всего: 107



Вполне читаемо, по моему мнению. Разве что заменить постоянно встречающийся $self->{results} ссылкой на него в $_ , и большим жирным комментарием вверху в стиле #* Проверка тыц-тыцности на клац-клацность


--------------------
Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас!
PM MAIL WWW Jabber   Вверх
krypt3r
Дата 11.2.2014, 06:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 2
Всего: 16



"неплохо" пишется слитно
PM MAIL   Вверх
slavenk
Дата 18.2.2014, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TheAthlete
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.10.2009

Репутация: нет
Всего: нет



У меня получился следующий вариант:

Код

$self->{results}{evaluation} =
  $self->{results}{correct_answer_percent} > $percent_5
    ? 'Отлично' 
    : $self->{results}{correct_answer_percent} > $percent_4
      ? 'Не плохо' 
      : $self->{results}{correct_answer_percent} > $percent_3
        ? 'Слабовато' 
        : 'Никуда не годится';



Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL ICQ Skype   Вверх
Bulat
Дата 18.2.2014, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1636
Регистрация: 22.3.2006
Где: за углом

Репутация: 5
Всего: 57



slavenk, и тот и другой вариант мне в принципе понятен!  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW ICQ   Вверх
Grost
Дата 27.2.2014, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 26.8.2010
Где: Москва

Репутация: нет
Всего: нет



http://perldoc.perl.org/5.8.8/Switch.html

PS. Вариант от slavenk мне каждется менее читабельным.
PM MAIL ICQ   Вверх
tishaishii
Дата 12.9.2018, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



Код

foreach (
    [ 'Отлично' , $percent_5 ] ,
    [ 'Не плохо' , $percent_4 ] ,
    [ 'Слабовато' , $percent_3 ] ,
    [ 'Никуда не годится' , -1 ]
) {
    next ( ) if $self->{ 'results' }{ 'correct_answer_percent' } <= $_->[ 1 ] ;

    $self->{ 'results' }{ 'evaluation' } = $_->[ 0 ]  ;

    last( ) ;
}


Это сообщение отредактировал(а) tishaishii - 12.9.2018, 21:18
PM MAIL ICQ Skype   Вверх
Google
  Дата 23.9.2018, 21:55 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1116 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.