Харьков Форум
  Харьков Форум > Hi-Tech... > Программирование и создание сайтов

Старый 15.12.2010, 13:02   #81
vlad7


 
 
Регистрация: 18.08.2006
Сообщений: 1,286
 
По умолчанию
Цитата:
Сообщение от eyeland
Доооо, так можно на любом языке сделать, мол "у меня для этого уже давно есть функция". И тогда любая задача решается одним ее вызовом.
Доооо, вы сами сможете подсчитать кол-во объектов и методов в этой строчке?
int[] ints = (from str in Request.Cookies["integers"].Split(',') select Convert.ToInt32(str)).ToArray();


    Вверх
Старый 15.12.2010, 13:04   #82
eyeland


 
 
Регистрация: 18.03.2009
Сообщений: 1,427
 
По умолчанию
Да, вылезет не ошибка, а предупреждение, и в таком случае странички нередко выглядят както так:





Ящитаю это фейл. Кстати это яркий пример того, что писать подобные ужасы у них считается нормальным.

Цитата:
Сообщение от vlad7
Доооо, вы сами сможете подсчитать кол-во объектов и методов в этой строчке?
int[] ints = (from str in Request.Cookies["integers"].Split(',') select Convert.ToInt32(str)).ToArray();
Тащемта это стандартная либа, все ок


    Вверх
Старый 15.12.2010, 13:36   #83
HelloWorld

 
Регистрация: 3.12.2009
Сообщений: 164
 
По умолчанию
notice всего-то, господи )) возвоможно, возможно. у меня они отключены, как по дефолту. но вы правы в общем-то.

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


    Вверх
Старый 15.12.2010, 13:52   #84
sergeime


 
 
Регистрация: 29.07.2006
Адрес: World is not enough
Сообщений: 45,867
 
По умолчанию
Цитата:
Сообщение от eyeland
Такой должен быть подход -- цепкий и методичный, иначе код превратится в макароны по-флотски, и будет пестрить ошибками и варнингами.
Ты это, хомячков у себя там задрачивай . меня не надо. А то книжек начитаются про правильные подходы и давай умничать.

Цитата:
Сообщение от HelloWorld
однако, хотите скажу в чем говнокодство в вашем коде? наличие этой куки нужно проверять отдельно. неустановленная кука - это штатная ситуация в программе, а не исключение. она не установлена - её нужно установить. вы штатную ситуацию обрабатываете через механизм исключений. это - говнокод.
Кстати да. Щас мы его залошим с легкостью.


__________________
Новый год оказывается может быть очень даже удачным .
We are antisocial
Загранпаспорт - FAQ
    Вверх
Старый 15.12.2010, 14:01   #85
eyeland


 
 
Регистрация: 18.03.2009
Сообщений: 1,427
 
По умолчанию
Цитата:
Сообщение от HelloWorld
notice всего-то, господи )) возвоможно, возможно. у меня они отключены, как по дефолту. но вы правы в общем-то.
Notice то на первом скрине, а с кукой будет именно warning.

Цитата:
Сообщение от HelloWorld
однако, хотите скажу в чем говнокодство в вашем коде? наличие этой куки нужно проверять отдельно. неустановленная кука - это штатная ситуация в программе, а не исключение. она не установлена - её нужно установить. вы штатную ситуацию обрабатываете через механизм исключений. это - говнокод.
Здрасьте пожалуйста. Это Вы сами придумали, или гдето прочитали такие рекомендации? Я ожидаю наличие куки, но имею ее отсутствие. Логично? Если бы в ПХП была полноценная поддерка исключений, то юзали б и помалкивали.

Цитата:
Сообщение от sergeime
Ты это, хомячков у себя там задрачивай . меня не надо. А то книжек начитаются про правильные подходы и давай умничать.

Кстати да. Щас мы его залошим с легкостью.
Иди отсюда мальчик, не мешай дядям.


    Вверх
Старый 15.12.2010, 14:10   #86
AS0kol


 
 
Регистрация: 12.07.2010
Адрес: Харьков
Сообщений: 1,271
 
По умолчанию
Цитата:
Сообщение от HelloWorld
однако, хотите скажу в чем говнокодство в вашем коде? наличие этой куки нужно проверять отдельно. неустановленная кука - это штатная ситуация в программе, а не исключение. она не установлена - её нужно установить. вы штатную ситуацию обрабатываете через механизм исключений. это - говнокод.
+1. Обрабатывание штатной ситуации через механизм исключений — верх "ума и сообразительности".


    Вверх
Старый 15.12.2010, 14:14   #87
sergeime


 
 
Регистрация: 29.07.2006
Адрес: World is not enough
Сообщений: 45,867
 
По умолчанию
Цитата:
Сообщение от eyeland
Здрасьте пожалуйста. Это Вы сами придумали, или гдето прочитали такие рекомендации? Я ожидаю наличие куки, но имею ее отсутствие. Логично? Если бы в ПХП была полноценная поддерка исключений, то юзали б и помалкивали.
Прийдет к тебе толпа юзеров без куков - чо ты делать будешь? Исключения ловить - дорогое удовольствие. Хотя если в твоем питоне стек не раскручивается - то говно вопрос.

Цитата:
Иди отсюда мальчик, не мешай дядям.
Дядя, ты шо-то загоняться начинаешь или мне кажется? Доебался до чужого кода, ожидай что так и до твоего кода точно так же доебутся.


__________________
Новый год оказывается может быть очень даже удачным .
We are antisocial
Загранпаспорт - FAQ
    Вверх
Старый 15.12.2010, 14:21   #88
eyeland


 
 
Регистрация: 18.03.2009
Сообщений: 1,427
 
По умолчанию
Цитата:
Сообщение от sergeime
Прийдет к тебе толпа юзеров без куков - чо ты делать будешь? Исключения ловить - дорогое удовольствие. Хотя если в твоем питоне стек не раскручивается - то говно вопрос.
Не дороже чем вызов функции. Учи матчасть.


Цитата:
Сообщение от sergeime
Дядя, ты шо-то загоняться начинаешь или мне кажется? Доебался до чужого кода, ожидай что так и до твоего кода точно так же доебутся.
До моего кода доебались необоснованно. Любые попытки сделать иначе приведут только к замедлению работы и увеличению количества кода. Или нет? Давайте только без пердежа.


    Вверх
Старый 15.12.2010, 14:28   #89
AS0kol


 
 
Регистрация: 12.07.2010
Адрес: Харьков
Сообщений: 1,271
 
По умолчанию
Код:
lIntCookies = request.COOKIES["integers"]
if lIntCookies is not None:
  try:
    integers = map(int, lIntCookies.split(","))
  except IndexError, ValueError:
    # handle bad cookie
    pass
Хочешь сказать, что так будет медленнее в случае отсутствия cookie?


    Вверх
Старый 15.12.2010, 14:37   #90
eyeland


 
 
Регистрация: 18.03.2009
Сообщений: 1,427
 
По умолчанию
Цитата:
Сообщение от AS0kol
Код:
lIntCookies = request.COOKIES["integers"]
if lIntCookies is not None:
  try:
    integers = map(int, lIntCookies.split(","))
  except IndexError, ValueError:
    # handle bad cookie
    pass
Хочешь сказать, что так будет медленнее в случае отсутствия cookie?
Та оно вообще вылетит с не пойманным KeyError))

Лучше делать так:

Код:
  try:
    integers = map(int, request.COOKIE.get("integers", None).split(","))
  except ValueError:
    # handle bad cookie
    pass
Тогда при отсутствии куки будет немного быстрее, (почти в 3 раза)

Но так как эта конструкция ест 0.00001% от общего времени, эту разницу даже измерить бенчмарками не удастся, что намекает о вреде преждевременной оптимизации)


    Вверх
Старый 15.12.2010, 14:51   #91
sergeime


 
 
Регистрация: 29.07.2006
Адрес: World is not enough
Сообщений: 45,867
 
По умолчанию
Цитата:
Сообщение от eyeland
Не дороже чем вызов функции. Учи матчасть.
В плюсах и шарпе раскрутка стека - дорогое удовольствие. Я не знаю что там в твоем питоне происходит, возможно такого понятия ваще нету и исключения не более чем профанация что б быть похожим на другие языки.


Цитата:
До моего кода доебались необоснованно. Любые попытки сделать иначе приведут только к замедлению работы и увеличению количества кода. Или нет? Давайте только без пердежа.
По-моему предварительная проверка на наличие ключа быстрее облажания в случае его отсутствия, не? Ессно если ваще все приходят с нужными куками - то это излишне, а если 50 на 50 - то возможно имеет смысл. Хотя уже то что ты об этом не подумал и начинаешь выделываться говорит о крайне низкой твоей ценности как программера.


__________________
Новый год оказывается может быть очень даже удачным .
We are antisocial
Загранпаспорт - FAQ
    Вверх
Старый 15.12.2010, 14:52   #92
AS0kol


 
 
Регистрация: 12.07.2010
Адрес: Харьков
Сообщений: 1,271
 
По умолчанию
Цитата:
Сообщение от eyeland
Та оно вообще вылетит с не пойманным KeyError))

Лучше делать так:

Код:
  try:
    integers = map(int, request.COOKIE.get("integers", None).split(","))
  except ValueError:
    # handle bad cookie
    pass
Тогда при отсутствии куки будет немного быстрее, (почти в 3 раза)

Но так как эта конструкция ест 0.00001% от общего времени, эту разницу даже измерить бенчмарками не удастся, что намекает о вреде преждевременной оптимизации)
Ок. C python дела не имел, но вот исправленный код. Хочешь сказать так будет медленнее, чем через исключение?
Код:
lIntCookies = request.COOKIES.get("integers")
if lIntCookies is not None:
  try:
    integers = map(int, lIntCookies.split(","))
  except IndexError, ValueError:
    # handle bad cookie
    pass
P.S. Например, при условии, что каждый третий-четвертый request будет без этого cookie.


    Вверх
Старый 15.12.2010, 15:01   #93
eyeland


 
 
Регистрация: 18.03.2009
Сообщений: 1,427
 
По умолчанию
Цитата:
Сообщение от AS0kol
Ок. C python дела не имел, но вот исправленный код. Хочешь сказать так будет медленнее, чем через исключение?
Код:
lIntCookies = request.COOKIES.get("integers")
if lIntCookies is not None:
  try:
    integers = map(int, lIntCookies.split(","))
  except IndexError, ValueError:
    # handle bad cookie
    pass
Этот вариант будет медленней чем:

Код:
try:
    integers = map(int, request.COOKIE.get("integers").split(","))
except ValueError, AttributeError:
    # handle bad cookie
    pass
Во вторых -- в твоем варианте будет 2 места с обработкой кривого куки. (в except и в else)
Предлагаешь скопипастить обработку кривой куки? О нет, это какойто php-way)

А еще быстрее будет если вообще ловить все исключения (просто except: )
Но это не ок и не по ГОСТам

Цитата:
Сообщение от sergeime
В плюсах и шарпе раскрутка стека - дорогое удовольствие. Я не знаю что там в твоем питоне происходит, возможно такого понятия ваще нету и исключения не более чем профанация что б быть похожим на другие языки.

По-моему предварительная проверка на наличие ключа быстрее облажания в случае его отсутствия, не? Ессно если ваще все приходят с нужными куками - то это излишне, а если 50 на 50 - то возможно имеет смысл. Хотя уже то что ты об этом не подумал и начинаешь выделываться говорит о крайне низкой твоей ценности как программера.
Мальчик, я ж просил не мешать


    Вверх
Старый 15.12.2010, 15:09   #94
sergeime


 
 
Регистрация: 29.07.2006
Адрес: World is not enough
Сообщений: 45,867
 
По умолчанию
Цитата:
Сообщение от eyeland
Этот вариант будет медленней чем:

Код:
try:
    integers = map(int, request.COOKIE.get("integers").split(","))
except ValueError, AttributeError:
    # handle bad cookie
    pass
Во вторых -- в твоем варианте будет 2 места с обработкой кривого куки. (в except и в else)
Предлагаешь скопипастить обработку кривой куки? О нет, это какойто php-way)

Мальчик, я ж просил не мешать
Ты дилетант. Зачем копипастить? Достаточно просто один раз посмотреть - если массив integers пустой - то значит кука кривая.


__________________
Новый год оказывается может быть очень даже удачным .
We are antisocial
Загранпаспорт - FAQ
    Вверх
Старый 15.12.2010, 15:11   #95
AS0kol


 
 
Регистрация: 12.07.2010
Адрес: Харьков
Сообщений: 1,271
 
По умолчанию
Цитата:
Сообщение от eyeland
Этот вариант будет медленней чем:

Код:
try:
    integers = map(int, request.COOKIE.get("integers").split(","))
except ValueError, AttributeError:
    # handle bad cookie
    pass
Во вторых -- в твоем варианте будет 2 места с обработкой кривого куки. (в except и в else)
Предлагаешь скопипастить обработку кривой куки? О нет, это какойто php-way)

А еще быстрее будет если вообще ловить все исключения (просто except: )
Но это не ок и не по ГОСТам
Вообще-то блока else нету и пустой cookie не попадет в блок try..except.


    Вверх
Старый 15.12.2010, 15:16   #96
eyeland


 
 
Регистрация: 18.03.2009
Сообщений: 1,427
 
По умолчанию
Цитата:
Сообщение от sergeime
Зачем копипастить? Достаточно просто один раз посмотреть - если массив integers пустой - то значит кука кривая.
Дилетант? В случае с кривой кукой переменной integers вообще не будет, и тогда твой if вылетит с NameError.

Или предлагаешь свою проверку тоже завернуть в try except? Ну это высший ПХПилотаж))


    Вверх
Старый 15.12.2010, 15:17   #97
AS0kol


 
 
Регистрация: 12.07.2010
Адрес: Харьков
Сообщений: 1,271
 
По умолчанию
Кстати, ты уже изменил свой код
Код:
try:
 integers = map(int, request.COOKIES["integers"].split(","))
except IndexError, ValueError:
 # handle bad cookie
 pass
Код:
  try:
    integers = map(int, request.COOKIE.get("integers", None).split(","))
  except ValueError:
    # handle bad cookie
    pass


    Вверх
Старый 15.12.2010, 15:20   #98
eyeland


 
 
Регистрация: 18.03.2009
Сообщений: 1,427
 
По умолчанию
Цитата:
Сообщение от AS0kol
Вообще-то блока else нету и пустой cookie не попадет в блок try..except.
Но ведь случай с пустым куки нужно тоже обработать, и обработать точно так же как случай с кривым куки.

Цитата:
Сообщение от AS0kol
Кстати, ты уже изменил свой код
Код:
try:
 integers = map(int, request.COOKIES["integers"].split(","))
except IndexError, ValueError:
 # handle bad cookie
 pass
Код:
  try:
    integers = map(int, request.COOKIE.get("integers", None).split(","))
  except ValueError:
    # handle bad cookie
    pass
Ну да, и не один раз. Навскидку ж писалось


    Вверх
Старый 15.12.2010, 15:23   #99
sergeime


 
 
Регистрация: 29.07.2006
Адрес: World is not enough
Сообщений: 45,867
 
По умолчанию
Цитата:
Сообщение от eyeland
Дилетант? В случае с кривой кукой переменной integers вообще не будет, и тогда твой if вылетит с NameError.

Или предлагаешь свою проверку тоже завернуть в try except? Ну это высший ПХПилотаж))
В питоне не нужно переменные объявлять заранее? Если нужно - почему ты этого не сделал? Говнокодик или охуенный язык, да здраствуют очепятки?
В javascript я могу проверить на undefined, чо в питоне такого нет?


__________________
Новый год оказывается может быть очень даже удачным .
We are antisocial
Загранпаспорт - FAQ
    Вверх
Старый 15.12.2010, 15:25   #100
vlad7


 
 
Регистрация: 18.08.2006
Сообщений: 1,286
 
По умолчанию
Цитата:
Сообщение от eyeland

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

Оказывается, научиться стрелять, не метясь, как ковбой, одной рукой, с пистолета довольно просто. Конечно, Вы в это не верите! Тут метишься и не попадаешь, а стрелять, не метясь просто? Все дело в том, что мы сами себе все усложняем. А на самом деле оказалось что научиться стрелять с пистолета не метясь, очень просто, и когда изучите тренировку то уже через месяц, а может и раньше, будете вполне нормально стрелять, и, не метясь попадать в цель, а дальше совершенству нет предела. Для этого не надо сильно тратиться. Нужен будет только пневматический пистолет любой модели. И еще одна вещь, которая есть в каждом доме, с неё и начнется тренировка. Этим методом можно тренироваться даже в квартире, и не надо специального помещения. И уже буквально через неделю Вы разовьете свою мышечную память руки так, что просто будите видеть цель, а рука безошибочно наведет пистолет и промаха не будет. " (http://fastmarksman.ru/)


    Вверх

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Харьков Форум > Hi-Tech... > Программирование и создание сайтов

Быстрый переход


Часовой пояс GMT +2, время: 04:11.


Харьков Форум Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.