Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> KISS, Общий принцип разработки
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 24 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 2 дня


KISS – (keep it short and simple делай короче и проще)

Или как еще иногда расшифровывают в гневе: "keep it simple stupid!" - делай это проще, тупица.

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

Зачастую программисты, особенно молодые, грешат склонностью к оверинженирингу. Еще не прошло желание сказать "мама, смотри как я умею!". А ведь чаще всего самыми эффекивными и надежными являются самые простые решения. Яркий пример, который порицается 90%-ми tru-программистов, это простая инициализация переменных из элементов суперглобальных массивов. В Yii допустим эта инициализация выглядит так:
    $page = Yii::app()->request->getPost('page', null);

Хотя самым простым, очевидным, и ничем не уступающим, решением этого конкретного места было бы
    $page = @$_POST['page'];


Однако это подвергается гонениям по нескольким причинам.
1. Все боятся собак
2. Хотят однообразия
3. Так круче!

И если первые (особенно второй) еще имеют некий смысл, к третьему (а он зачастую решающий) так и хочется применить принцип KISS

Это не руководство к действию, конечно не стоит выделяться из толпы, можно и огрести. Но как пример очень подходяще. Настолько уже въелось у всех в сознание, что круче как минимум через тернарник, что такая строчка сразу же вызывает жуткий батхерт дискомфорт.

Конечно, нужно выбирать золотую середину. Иначе можно доупрощаться до оверхеда, как с рефлексией в генерации объектов. Или наоборот, сделать код моментальным, но совершенно не читабельным.

Так что KISS трактуется не как "Упрощай!", а именно как "Не усложняй!".


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Гость_glock18  
[x] Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Цитата (twin @ 5.10.2015 - 08:36)
   
$page = Yii::app()->request->getPost('page', null);


Хотя самым простым, очевидным, и ничем не уступающим, решением этого конкретного места было бы
   
$page = @$_POST['page'];



Однако это подвергается гонениям по нескольким причинам.
1. Все боятся собак
2. Хотят однообразия
3. Так круче!


Тут сложно удержаться от поправки. KISS собой в первую очередь подразумевает простоту для понимания, а не маленькое кол-во вызовов функций. Чем они отличаются с точки зрения понятности?

$page = Yii::app()->request->getPost('page', null);

Просто прочитав строку (свойства и методы один за другим) - все предельно ясно. Берется объект request приложения, и у него запрашивает post-переменная page. Второй аргумент, пожалуй, неочевиден (дефолт скорее всего), но наверняка для null его можно опускать, после чего строка перестанет иметь потенциально неочевидные (не simple stupid) фрагменты:
$page = Yii::app()->request->getPost('page');


Несмотря на то, что
$page = @$_POST['page'];
выглядит короче, здесь уже есть собака, которая в принципе сама по себе делает неочевидную вещь. Но даже если разработчики решили согласиться на понятности собаки для всех, обилие генерируемых ошибок в пыхе очень сильно сказываются на производительности (в частности добавить проверку isset, убрать собаку и все в ажуре - и кстати понятнее, чем @). Пример из опыта такой:

В одном проекте был контроллер, который возвращал список записей (не помню уже в каком виде), закралась в него ошибка, которая возникала на каждой итерации цикла (записей 300 было где-то). Обработка такого запроса занимала почти 30 секунд, а после устранения ошибки - меньше секунды (то есть в районе 0.1с выигрыша за устранение одной ошибки). Так что даже если вы считаете, что @ - абсолютно понятный и очевидный оператор (возможно, тем не менее, забываете, что она не мешает генерации ошибок, она всего лишь подавляет их вывод - почти вся лишняя работа со стороны пыха все равно делается), то может быть его влияние на производительность заставит вас пересмотреть свое отношение к нему.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6045
Пользователь №: 1
На форуме: 11 лет, 5 месяцев, 20 дней
Карма: 129

Не пью :
22 года, 10 месяцев, 20 дней


Цитата (twin @ 5.10.2015 - 07:36)
$page = @$_POST['page'];

Не знаю Yii, а в нашем форуме я предпочитаю использовать конструкцию
$ibforums->input['page']
не потому, что "круче", а потому, что эта переменная уже прошла фильтрацию, в частности:
     	$val = str_replace( "<!--"         , "& #60;& #33;--"  , $val );
$val = str_replace( "-->" , "--& #62;" , $val );
$val = str_replace( ">" , "& gt;" , $val );
$val = str_replace( "<" , "& lt;" , $val );
$val = str_replace( "\"" , "& quot;" , $val );


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 24 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 2 дня


Цитата (Гость_glock18 @ 11.06.2016 - 04:06)
Просто прочитав строку (свойства и методы один за другим) - все предельно ясно
Для чтения спору нет. Ничего сложного. А вот для того, чтобы написать это по правилам, нужно эти правила узнать. А это усложняет жизнь.

Понятно, что в фреймворке не напишешь с собачкой. Коньюнктура, заплюют. Потому и написал причины:
Цитата (twin @ 5.10.2015 - 04:36)
1. Все боятся собак
2. Хотят однообразия
3. Так круче!
Для себя я пишу с собакой, а в фреймворке сделал функцию, обертку над этой веревкой, упрощающую жизнь.

Что касается собак, вот я писал, не стану повторяться. Лейбмотив прост. Все хорошо на своих местах. Приводить примеры того, что собака - зло на неподходящих для неё местах... это как обжегшись на молоке дуть на воду.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1976
Пользователь №: 38654
На форуме: 3 года, 6 месяцев, 24 дня
Карма: 46




Цитата (twin @ 5.10.2015 - 08:36)
Однако это подвергается гонениям по нескольким причинам.
1. Все боятся собак
2. Хотят однообразия
3. Так круче!

4. Новым людям в проекте надо растолковывать в каких случаях нужна собачка, а в каких нет. Сегодня ты им скажешь здесь можно, а потом они возьмут и применят собачку на целые ветки кода.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Цитата (twin @ 11.06.2016 - 15:57)
Все хорошо на своих местах. Приводить примеры того, что собака - зло на неподходящих для неё местах... это как обжегшись на молоке дуть на воду.

Собачка имеет одно применение только: глушение ошибок (точнее вид делает, что глушит), которые в принципе никак не заглушить. Это заплатка для одного из худших механизмов в пхп, плохо делающая свое дело к тому же.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Гость_glock18  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Цитата (FatCat @ 11.06.2016 - 11:27)
Цитата (twin @ 5.10.2015 - 07:36)
$page = @$_POST['page'];

Не знаю Yii, а в нашем форуме я предпочитаю использовать конструкцию
$ibforums->input['page']
не потому, что "круче", а потому, что эта переменная уже прошла фильтрацию, в частности:
     	$val = str_replace( "<!--"         , "& #60;& #33;--"  , $val );
$val = str_replace( "-->" , "--& #62;" , $val );
$val = str_replace( ">" , "& gt;" , $val );
$val = str_replace( "<" , "& lt;" , $val );
$val = str_replace( "\"" , "& quot;" , $val );

Этот вариант мне не особо нравится тем, что по input - неясно откуда берется переменная. То ли это POST, то ли GET, а то и вовсе кука. А фильтрацию можно провести не только для такой конструкции smile.gif К тому же не всё, приходящее от клиента, нужно фильтровать именно таким вот фильтром (не уверен, что понимаю, чего он достигает этот фильтр вообще, если честно), то есть заранее фильтровать все, что приходит в принципе может быть не самой хорошей идеей.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6045
Пользователь №: 1
На форуме: 11 лет, 5 месяцев, 20 дней
Карма: 129

Не пью :
22 года, 10 месяцев, 20 дней


Цитата (Гость_glock18 @ 11.06.2016 - 22:40)
неясно откуда берется переменная. То ли это POST, то ли GET, а то и вовсе кука

Мне ясно.
Если $ibforums->input['metod'] равно 'GET' - это GET. Если равно 'POST' - это POST.
Это для тех случаев, когда это имеет значение.
Смысл в том, чтобы не пустить ХТМЛ; он разрешен только ББ-кодами.

Кука туда в принципе попасть не может.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Гость_glock18  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Цитата (FatCat @ 12.06.2016 - 01:47)
Цитата (Гость_glock18 @ 11.06.2016 - 22:40)
неясно откуда берется переменная. То ли это POST, то ли GET, а то и вовсе кука

Мне ясно.
Если $ibforums->input['metod'] равно 'GET' - это GET. Если равно 'POST' - это POST.
Это для тех случаев, когда это имеет значение.
Смысл в том, чтобы не пустить ХТМЛ; он разрешен только ББ-кодами.

Кука туда в принципе попасть не может.

Проблема в том, что "Мне ясно" не аргумент в KISS. Должно быть ясно идиоту в идеале.

$ibforums->input['metod']

Все только осложняет. Получается, что "$ibforums->input['metod']" и "$ibforums->input['page']" ведут себя совершенно по-разному, и что произойдет, если мне нужна будет переменная по имени metod? Что будет, если POST-запрос будет отправлен на страницу с GET-параметрами? Это все очень неочевидно, если не лезть в детали заполнения этого массива.

Куки я приплел, потому что в пыхе это 3й вариант получения данных от клиента: GET, POST, COOKIE. Тоже input по сути, хотя согласен, что он там почти невероятен, разграничение между GET и POST сделано очень очевидным.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Цитата (Гость_glock18 @ 12.06.2016 - 07:06)
сделано очень очевидным.

опечатка: очень неочевидным
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 24 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 2 дня


Цитата (chee @ 11.06.2016 - 19:13)

4. Новым людям в проекте надо растолковывать в каких случаях нужна собачка,
Новым людям в проекте нужно много чего растолковывать. И уж тем более это:
$page = Yii::app()->request->getPost('page');
Так что не аргумент.
Цитата (Guest @ 11.06.2016 - 19:19)
Это заплатка для одного из худших механизмов в пхп, плохо делающая свое дело к тому же.
Вот тут очень хочется вставить реплику про танцора. Плохого.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6045
Пользователь №: 1
На форуме: 11 лет, 5 месяцев, 20 дней
Карма: 129

Не пью :
22 года, 10 месяцев, 20 дней


Цитата (twin @ 13.06.2016 - 05:16)
про танцора

Я как не обученный танцам, просто подпрыгиваю в такт музыке: чтобы не ввалили мне ХТМЛ, использую $ibforums->input['Post']; но когда админу нужно вставить ХТМЛ использую $_POST['Post'].


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8982
Пользователь №: 26630
На форуме: 6 лет, 4 месяца, 25 дней
Карма: 611




Цитата (twin @ 5.10.2015 - 08:36)
Хотя самым простым, очевидным, и ничем не уступающим, решением этого конкретного места было бы
    $page = @$_POST['page'];

а почему filter_input() даже не рассматривается? Ведь он для того и предназначен smile.gif
Цитата (FatCat @ 11.06.2016 - 11:27)
$ibforums->input['page']
не потому, что "круче", а потому, что эта переменная уже прошла фильтрацию, в частности:
      $val = str_replace( "<!--"        , "& #60;& #33;--"  , $val );
    $val = str_replace( "-->"          , "--& #62;"      , $val );
    $val = str_replace( ">"            , "& gt;"          , $val );
    $val = str_replace( "<"            , "& lt;"          , $val );
    $val = str_replace( "\""          , "& quot;"        , $val );

это айпибордовская фича? blink.gif ужас ohmy.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6045
Пользователь №: 1
На форуме: 11 лет, 5 месяцев, 20 дней
Карма: 129

Не пью :
22 года, 10 месяцев, 20 дней


Цитата (killer8080 @ 13.06.2016 - 14:27)
айпибордовская фича?

Ага.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4284
Пользователь №: 29002
На форуме: 5 лет, 11 месяцев, 26 дней
Карма: 147




я вот не понял, зачем выдирать какой-то частный пример (Yii) и сравнивать его с нативным синтаксисом?

в каждом фреймворке подобные конструкции имеют место быть, но и различаются. есть такое понятие, как "специалист по такому-то фреймворку". этот специалист будет делать так, как регламентировано во фрейме. и не потому, что так "круче", а потому, что это "ДИСЦПЛИНА!МАТЬВАШУ".

естественно, на всяких ABC-самописах можно сношать данные и в хвост и в гриву, но ведь каждый фрейм реальизует свою архитектуру KISS, так что либо холиварить в рамках одного фреймворка либо... ну... просто попить пива в сторонке...
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

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

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса