Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для zontik24
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432

Best practice. Сокращение программного кода

04.03.2017, 14:39. Показов 819. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Пишу приложение для шифрования всего и вся

Каждый метод шифрования включает в себя две опции в статике (шифрование/дешифрование)

Для такого однообразного кода, я вижу решение использовать switch..case statement, Можно вложенный заменить на if statement

Как сократить следующие наработки оптимально (если нужно)?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
             switch(Yii::$app->request->post('CryptForm')['method']) // методы шифрования
             {
                  case 1 :
                        switch (Yii::$app->request->post('CryptForm')['type']) // тип (шфрование/дешифрование)
                        {
                            case 1:
                                // шифруем 1-м методом...
                                break;
                            case 2:
                                // дешифруем 1-м методом...
                        }
                        break;
                    case 2:
                        switch (Yii::$app->request->post('CryptForm')['type']) 
                        {
                            case 1:
                                //шифруем 2-м методом...
                                break;
                            case 2:
                                // дешифруем 2-м методом...
                        }
                    ...
               }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.03.2017, 14:39
Ответы с готовыми решениями:

Сокращение кода
Можно ли както сократить код типа: Panel1.Visible:=False; Panel2.Visible:=False; Panel3.Visible:=False; Panel4.Visible:=False; ...

Сокращение кода
<script type="text/javascript"> window.addEvent('domready', function(){ //-vertical var mySlide = new Fx.Slide('publ'); ...

Сокращение кода
Есть задача: Я решил таким способом: #include <fstream> int N,i,x,t,k,j,*G; main() { std::fstream...

2
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
04.03.2017, 16:38
Одного сокращения тут мало.

Пусть форма вместо безликих цифр передаёт название метода и тип encode/decode.

Для каждого способа шифрования свой класс:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
class EncodeMethodGaus
{
    public function encode($var)
    {
        return $var;
    }
    
    public function decode($var)
    {
        return $var;
    }
}
Плюс фабрика, которая по названию метода создаёт его экземпляр:

PHP
1
2
3
4
5
6
7
8
class EncodeFactory
{
    public static function make($method)
    {
        $name = 'EncodeMethod' . ucfirst($method);
        return new $name;
    }
}
В контроллере:

PHP
1
2
3
$method = EncodeFactory::make(Yii::$app->request->post('CryptForm')['method']); // Типа в ['method'] лежит название, например 'gaus'
$type = Yii::$app->request->post('CryptForm')['type']; // Типа в ['type'] лежит 'encode' или 'decode'
$data = $method->$type();
1
 Аватар для zontik24
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432
05.03.2017, 13:50  [ТС]
Jodah, ну, а раз методы повторяются, то можно сделать так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class EncodeMethodGaus implements ICryptography
{
    public function encode($var)
    {
        return $var;
    }
    
    public function decode($var)
    {
        return $var;
    }
}
 
interface ICryptography 
{
    public function encode($var) {}
    
    public function decode($var) {}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2017, 13:50
Помогаю со студенческими работами здесь

Сокращение кода
Всем привет! Ребят, возникла мелкая проблема. Написал программку человеку, он начал сдавать ее преподу. Та не приняла, сославшись, что код...

Сокращение кода
Встретился с задачей №61 на acmp. После некоторых махинаций с кодом пришел вот к такому варианту в 76 символов: var c: real; begin ...

Сокращение кода
Как это можно сократить?...%-) if c1=ColorBox1.ItemIndex then begin if (c1=0) then H1.Picture:=S1.Picture; ...

Сокращение кода
Подскажите пожалуйста где можно посмотреть как быстро получить блок кода, то есть for tab tab = for (int i = 0; i < length; i++) ...

Сокращение кода
Я учусь сокращать код на С++, для решения олемпиадных задач. (только пока еще простые задачки) Условие задачи: Сбор черники ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru