Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 3 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя
Показано с 21 по 30 из 33
  1. #21
    Аватар для Geebrox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Именно, это будет быстрее. Ты забываешь, что прописать нужно не только sizeof, но ещё и static const + составить формулу со всеми вычетами заполнителей (когда я это могу сделать прямо в момент выделения текста, пропуская лишнее) + прописать в format вызов массива static const. К тому же, размер контакнт нужно будет смотреть и в случае использования static const.
    Раз ты полагаешься на плагины для подсчёта, то почему для static const + sizeof не подумал о сниппетах??? Благо они есть в нормальных редакторах, так вот используя сниппеты ты не должен будешь прописывать всё в ручную.

    - - - Добавлено - - -

    Цитата Сообщение от DeimoS Посмотреть сообщение
    А все твои "вот если строку изменить!...." - это обычное надумывание положительных моментов, для которых я так же могу придумать десяток отрицательных
    Не знаю как часто ты меняшь строку, но мне приходится очень часто и я не надумываю это всё, в процессе разработки очень часто приходят новые мысли, с которыми нужно внести некоторые изменении включая изменение строк.
    Последний раз редактировалось Geebrox; 31.05.2018 в 17:33.
    Респект:
    @DeimoS
    @ziggi
    @Daniel_Cortez

  2. #22
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Geebrox Посмотреть сообщение
    Раз ты полагаешься на плагины для подсчёта, то почему для static const + sizeof не подумал о сниппетах??? Благо они есть в нормальных редакторах, так вот используя сниппеты ты не должен будешь прописывать всё в ручную.
    Потому что, во-первых, ситуации бывают разные (разное количество строк, как минимум) и универсальный сниппет ты никак не составишь. Во-вторых, если бы проблема "static const" была только во времени набора символов, никаких вопросов бы не было (я, например, за то, чтоб вместо всяких макросов "f" писать полноценно "format"). Но помимо лишнего времени на набор, есть ещё убитая читаемость, раздуваемый код и надуманный плюс о том, что так подсчёт строки будет происходить в несколько раз быстрее, когда на деле этот метод будет выигрывать только в крайне длинных и крайне криво оформленных строках, а в большинстве случаев наоборот лишь время на написание кода отнимать.

    Цитата Сообщение от Geebrox Посмотреть сообщение
    Не знаю как часто ты меняшь строку, но мне приходится очень часто и я не надумываю это всё, в процессе разработки очень часто приходят новые мысли, с которыми нужно внести некоторые изменении включая изменение строк.
    Ну начнём с вопроса о том, кто тебе мешает выделить под такие строки изначально, например, 500 ячеек и редактировать сообщения как душа пожелает. А уже после того, как система будет написана, рассчитать размер один единственный раз, составив нормальную формулу?

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

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




    Хотя я не особо понимаю к чему вообще весь этот разговор. У варианта "static const + sizeof" есть объективные минусы, хочешь ли ты это принимать или нет. И я не призываю никого отказываться от этого варианта, а лишь указываю на объективные недостатки, которые люди подчас не хотят видеть, напридумав положительных моментов (как это было с тем же foreach для игроков/транспорта в зоне стрима).

    Желаете пользоваться подобным подсчётом? Пожалуйста, вас никто не держит. Только понимайте все плюсы и минусы этого метода, а так же не забывайте говорить о минусах, когда в очередной раз советуете кому-то этот метод. Потому что пока я вижу лишь вред от того, что всякие понтокодеры подхватили идею такого подсчёта и, в итоге, лепят что-то подобное:
    PHP код:
    static const 
        
    msg_1[] = "...",
        
    msg_2[] = "...";
    new 
        
    string_1[sizeof(msg_1)+...],
        
    string_2[sizeof(msg_2)+...];
    format(string_1sizeof(string_1), msg_1, ...);
    SendClientMessage(playerid, -1string_1);
    format(string_2sizeof(string_2), msg_2, ...);
    SendClientMessage(playerid, -1string_2); 
    не говоря уже о различных извращениях, часть которых я описал в предыдущих сообщениях, которые в ноль убивают читаемость
    Последний раз редактировалось DeimoS; 01.06.2018 в 10:17.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #23
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Не люблю поднимать темы, но думаю, на сей раз оно всё же стоит того.
    Цитата Сообщение от DeimoS Посмотреть сообщение
    В отличии от простого варианта, где всё подсвечивается редактором:
    PHP код:
    new string[45+ (-MAX_PLAYER_NAME)];
    format(stringsizeof(string), "[A] Администратор %s отказал в запросе о помощи"name);  // Тут уже сразу видно где находятся переменные, ибо они отделяются текстом от массива для заполнения 
    Собственно, иллюстрация того, что я написал ранее о том, как легко ошибиться при подсчёте без sizeof. В цитате выше неправильно указан размер форматной строки "45", в то время как редактор при выделении текста указывает "47".

    Цитата Сообщение от DeimoS Посмотреть сообщение
    А для подсчёта символов в строке достаточно использовать нормальный редактор (то бишь, практически всё, кроме Pawno), в котором вшита функция подсчёта выделенных символов. От полученного значения отнять спецификаторы и получится размер строки без спецификаторов.
    Тоже неверно. Получится не размер, а длина строки - для размера нужно добавить ещё "+1" под завершающий символ '\0' (т.е. для примера выше правильным будет не "45" и не "47", а "48"). Ещё одна мелочь, из-за которой легко допустить ошибку, и ещё один минус к подсчёту без sizeof.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  4. #24
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Собственно, иллюстрация того, что я написал ранее о том, как легко ошибиться при подсчёте без sizeof. В цитате выше неправильно указан размер форматной строки "45", в то время как редактор при выделении текста указывает "47".
    Это не ошибка, а привычка сразу высчитывать спецификаторы :) Просто забыл убрать "-2" в формуле (точнее, просто не обратил внимание на оставшуюся формулу, так как посыл был именно в замене sizeof).
    Хотя даже в этом виде никакой проблемы не будет за счёт 4-ех дополнительных символов MAX_PLAYER_NAME (ну разве что кто-то не решится позволять игрокам изменять ник, делая его длиннее 20 символов) , хоть формула получилась и не совсем верной.


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Тоже неверно. Получится не размер, а длина строки - для размера нужно добавить ещё "+1" под завершающий символ '\0' (т.е. для примера выше правильным будет не "45" и не "47", а "48"). Ещё одна мелочь, из-за которой легко допустить ошибку, и ещё один минус к подсчёту без sizeof.
    Не нужно придираться к словам :)
    Собственно, выше я уже написал причину того, почему формула именно такая. В своём коде я не извращяюсь с явным вычитанием спецификаторов, а делаю просто так:
    PHP код:
    new string[45+MAX_PLAYER_NAME+1];// В собственном моде ещё, обычно, делаю макрос, в котором хранится "реальный" размер ника (20 символов), который и использую при составлении таких формул
    format(stringsizeof(string), "[A] Администратор %s отказал в запросе о помощи"name); 
    Если очень хочется добиться истины, могу скинуть в личку какой-нибудь старый скрипт с подобным подсчётом, дабы проверил его на наличие ошибок.




    Хотя крайне опрометчиво с твоей стороны пытаться приписывать ошибку в формуле в качестве одного из минусов ручного подсчёта. При "автоматическом" подсчёте такая возможность в несколько раз увеличивается за счёт "раздутости" кода и лишних телодвижений при попытках определить последовательность переменных в format.
    Уже на каком-нибудь вот таком варианте:
    1. format(query_string, sizeof(query_string), fmt_string, Houses[i][Houses_Name], Houses[i][Houses_Cost], Houses[i][Houses_UpKeep], Houses[i][Houses_UpKeepLeft], Houses[i][Houses_Buyout], Houses[i][Houses_Interior], Houses[i][Houses_Car], Houses[i][Houses_Lock], Houses[i][Houses_Rentabil], Houses[i][Houses_RentCost], Houses[i][Houses_HealUpgrade], Houses[i][Houses_ArmourUpgrade], Houses[i][Houses_PickupX], Houses[i][Houses_PickupY], Houses[i][Houses_PickupZ], Houses[i][Houses_PickupA], Houses[i][Houses_InteriorX], Houses[i][Houses_InteriorY], Houses[i][Houses_InteriorZ], Houses[i][Houses_InteriorA]);

    можно испытать немало проблем (особенно если это не твой код и ты не знаешь на память размеры тех или иных переменных)

    В случае с обычным подсчётом я просто сделал так
      Открыть/закрыть

    Собственно, это как раз пример работы с чужим кодом. За счёт того, что у меня перед глазами были как строка с порядком спецификаторов (а это хорошо помогает понять, массив перед тобой, целочисленная переменная или вещественная), так и список самих переменных, составление формулы заняло не больше минуты, а на определение ДЛИНЫ строки ушло, в худшем случае, чуть больше времени, чем я писал бы код автоподсчёта (и то потому что я на сразу занимался вычитанием спецификаторов из конечной длины строки, а не указывал это в формуле. Так что, вполне возможно, что я сделал закончил с составлением формулы даже быстрее, чем сделал бы это с автоподсчётом, не прописывая каждый раз "-2").

    P.S. Самой формулы на скрине нет, ибо она строк на 15 выше, так как там появилось ещё несколько случаев применения массива после того, как я рассчитал размер под этот format (и вот тут с автоподсчётом я бы знатно попотел, ибо пришлось бы через весь экран глазами "прыгать"). Массив я уже дописал для скрина, дабы было понятно, что всё получилось вполне компактно и лишних движений глазами практически не нужно делать.
    Последний раз редактировалось DeimoS; 08.06.2018 в 00:16.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. #25
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Просто забыл убрать "-2" в формуле
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Это не ошибка
    Даже не знаю, что и сказать.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Хотя даже в этом виде никакой проблемы не будет за счёт 4-ех дополнительных символов MAX_PLAYER_NAME (ну разве что кто-то не решится позволять игрокам изменять ник, делая его длиннее 20 символов) , хоть формула получилась и не совсем верной.
    Это справедливо только для тех случаев, когда в формуле есть что-то с "запасом".


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Не нужно придираться к словам :)
    Если ты на словах так легко путаешь понятия, то и на практике можешь забыть об отличии длины строки от размера. Раньше уже приходилось наблюдать подобное и на форуме, и просто при общении с другими людьми. Но если для тебя проще называть это придирками, то, наверное, я не могу запретить тебе это делать.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    В своём коде я не извращяюсь с явным вычитанием спецификаторов, а делаю просто так:
    PHP код:
    new string[45+MAX_PLAYER_NAME+1];// В собственном моде ещё, обычно, делаю макрос, в котором хранится "реальный" размер ника (20 символов), который и использую при составлении таких формул
    format(stringsizeof(string), "[A] Администратор %s отказал в запросе о помощи"name); 
    Ок, т.е. вместо расписывания части формулы ты пытаешься просчитать эту часть в уме. Вот только чем больше вещей стараешься делать в уме, тем больше вероятность ошибки - ты сам же и показал это выше.
    Собственно, в чём и отличие наших подходов к подсчёту: твой способ - для тех, кому нужна скорость написания, мой - для тех, кому важнее правильность расчётов и надёжность. Можешь апеллировать к тому, что работать с форматной строкой, вынесенной в отдельный массив, неудобно, но лично я не вижу никаких проблем в том, что строка смещена на сантиметр или два выше вызова format.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Хотя крайне опрометчиво с твоей стороны пытаться приписывать ошибку в формуле в качестве одного из минусов ручного подсчёта. При "автоматическом" подсчёте такая возможность в несколько раз увеличивается за счёт "раздутости" кода и лишних телодвижений при попытках определить последовательность переменных в format.
    Уже на каком-нибудь вот таком варианте:
    1. format(query_string, sizeof(query_string), fmt_string, Houses[i][Houses_Name], Houses[i][Houses_Cost], Houses[i][Houses_UpKeep], Houses[i][Houses_UpKeepLeft], Houses[i][Houses_Buyout], Houses[i][Houses_Interior], Houses[i][Houses_Car], Houses[i][Houses_Lock], Houses[i][Houses_Rentabil], Houses[i][Houses_RentCost], Houses[i][Houses_HealUpgrade], Houses[i][Houses_ArmourUpgrade], Houses[i][Houses_PickupX], Houses[i][Houses_PickupY], Houses[i][Houses_PickupZ], Houses[i][Houses_PickupA], Houses[i][Houses_InteriorX], Houses[i][Houses_InteriorY], Houses[i][Houses_InteriorZ], Houses[i][Houses_InteriorA]);

    можно испытать немало проблем (особенно если это не твой код и ты не знаешь на память размеры тех или иных переменных)

    В случае с обычным подсчётом я просто сделал так
    ...
    Собственно, это как раз пример работы с чужим кодом. За счёт того, что у меня перед глазами были как строка с порядком спецификаторов (а это хорошо помогает понять, массив перед тобой, целочисленная переменная или вещественная), так и список самих переменных, составление формулы заняло не больше минуты, а на определение ДЛИНЫ строки ушло, в худшем случае, чуть больше времени, чем я писал бы код автоподсчёта (и то потому что я на сразу занимался вычитанием спецификаторов из конечной длины строки, а не указывал это в формуле. Так что, вполне возможно, что я сделал закончил с составлением формулы даже быстрее, чем сделал бы это с автоподсчётом, не прописывая каждый раз "-2").

    P.S. Самой формулы на скрине нет, ибо она строк на 15 выше, так как там появилось ещё несколько случаев применения массива после того, как я рассчитал размер под этот format (и вот тут с автоподсчётом я бы знатно попотел, ибо пришлось бы через весь экран глазами "прыгать"). Массив я уже дописал для скрина, дабы было понятно, что всё получилось вполне компактно и лишних движений глазами практически не нужно делать.
    Ну, раз уж на то пошло, то...
    1. static const fmt_str[] =
    2. "INSERT INTO house("
    3. "house_name,house_cost,up_keep,up_keep_left,"
    4. "buyout,interior,car,house_lock,"
    5. "rentabil,rent_cost,heal_upgrade,armour_upgrade,"
    6. "pickup_x,pickup_y,pickup_z,pickup_a,"
    7. "interior_x,interior_y,interior_z,interior_a"
    8. ") VALUES ("
    9. "'%s','%d','%d','%d',"
    10. "'%d','%d','%d','%d',"
    11. "'%d','%d','%d','%d',"
    12. "'%f','%f','%f','%f',"
    13. "'%f','%f','%f','%f'"
    14. ")";
    15. new query_str[];
    16. query_string, sizeof(query_string), fmt_string,
    17. Houses[i][Houses_Name], Houses[i][Houses_Cost], Houses[i][Houses_UpKeep], Houses[i][Houses_UpKeepLeft],
    18. Houses[i][Houses_Buyout], Houses[i][Houses_Interior], Houses[i][Houses_Car], Houses[i][Houses_Lock],
    19. Houses[i][Houses_Rentabil], Houses[i][Houses_RentCost], Houses[i][Houses_HealUpgrade], Houses[i][Houses_ArmourUpgrade],
    20. Houses[i][Houses_PickupX], Houses[i][Houses_PickupY], Houses[i][Houses_PickupZ], Houses[i][Houses_PickupA],
    21. Houses[i][Houses_InteriorX], Houses[i][Houses_InteriorY], Houses[i][Houses_InteriorZ], Houses[i][Houses_InteriorA]
    22. );

    Я разделил форматную строку на несколько строк кода и сгруппировал в ней названия столбцов из БД со значениями - довольно простой способ убедиться, что ничего не упустил. Впрочем, время на написание кода я считать не возьмусь, поскольку не привык работать с запросами (к тому же, у меня нет доступа к твоему коду, ту же форматную строку пришлось переписывать и додумывать по скрину).


    P.S.: Надеюсь, в твоей системе домов у игроков нет возможности напрямую изменять содержимое поля Houses_Name.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. #26
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Даже не знаю, что и сказать.
    Иными словами, в коде таких ошибок я, соответственно, не допускаю. Просто потому что в коде я пишу формулу с нуля, а тут заменил лишь sizeof, дабы была видна разница "ручного" подсчёта и "автоматического"

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Это справедливо только для тех случаев, когда в формуле есть что-то с "запасом".
    Я и не спорю. Это сказано было лишь к слову. Как уже выше сказал, в "боевых" условиях ещё никогда не было такой проблемы, просто потому что формулу составляю с нуля и понимаю, что нужно быть внимательным.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если ты на словах так легко путаешь понятия, то и на практике можешь забыть об отличии длины строки от размера.
    Я не подразумевал под словами "размер строки" понятия, связанного с программированием. Это просто плохая привычка и не более.

    Хотя, к слову, я никогда раньше не встречал такого ярого контроля этих двух понятий, хоть и перечитал кучу форумов по программированию. Всегда, когда о строке говорят как просто о строке, а не строке и массиве, люди правильно понимали смысл этой фразы. Ну да ладно, тут нет смысла противится.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ок, т.е. вместо расписывания части формулы ты пытаешься просчитать эту часть в уме. Вот только чем больше вещей стараешься делать в уме, тем больше вероятность ошибки - ты сам же и показал это выше.
    Вот именно поэтому я и говорю, что ты придираешься к тексту :) Мне кажется, и без лишних объяснений понятно, что формула, помимо замены "sizeof" на "45", не претерпела никаких изменений (это видно по её виду). А ты пытаешься из этого какие-то аргументы высосать при том, что изначально в моём сообщении и про определения не было какой-то речи, и про правильное составление формулы. В нём просто показывался визуальный вид двух вариантов и не более. Так что не очень понятно зачем ты до сих пор строишь свои аргументы именно на придирках.

    И да, я не провожу каких-то сложных математических вычислений в уме. Когда вижу, что редактор, например, показывает мне "47", то просто начинаю считать на убывание все символы спецификаторов, контролируя себя мышкой (дабы не пропустить символ или не посчитать его дважды). То бишь, вижу спецификатор "%s" и сначала отнимаю "s", в голове держа число "46", а потом отнимаю "%", держа "45". Думаю, понятно, что на такой перерасчёт уходят считанные миллисекунды.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Собственно, в чём и отличие наших подходов к подсчёту: твой способ - для тех, кому нужна скорость написания, мой - для тех, кому важнее правильность расчётов и надёжность. Можешь апеллировать к тому, что работать с форматной строкой, вынесенной в отдельный массив, неудобно, но лично я не вижу никаких проблем в том, что строка смещена на сантиметр или два выше вызова format.
    Как же лихо ты упускаешь составление формулы, с которой страдает достаточно много народа, что пользуется твоим способом (за пруфами можешь на p-i сходить, глянув какой-нибудь раздел с командами, например). Не говоря уже о случаях, когда у нас есть несколько разных строк :)

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


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Я разделил форматную строку на несколько строк кода и сгруппировал в ней названия столбцов из БД со значениями - довольно простой способ убедиться, что ничего не упустил. Впрочем, время на написание кода я считать не возьмусь, поскольку не привык работать с запросами (к тому же, у меня нет доступа к твоему коду, ту же форматную строку пришлось переписывать и додумывать по скрину).
    Ну всё то же самое можно и прямо в format сделать, если что.


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    P.S.: Надеюсь, в твоей системе домов у игроков нет возможности напрямую изменять содержимое поля Houses_Name.
    Во-первых, не в моей :) Это, вроде как, система Open-GTO, если заказчик не переписывал/изменял её.
    Во-вторых, естественно, нет :) Да и если ты намекаешь на инъекцию, то этот код просто заполняет таблицу данными из массива (да, в Open-GTO данные о домах/бизнесах дублируются и в массиве, и в файле(хотя сейчас это БД). И это старый вариант кода, от которого я уже отказался), если вдруг она пуста, поэтому игрок никак не влияет на этот код.
    Последний раз редактировалось DeimoS; 09.06.2018 в 16:06.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. #27
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Я не подразумевал под словами "размер строки" понятия, связанного с программированием. Это просто плохая привычка и не более.
    Даже если предположить, что это была просто путаница в словах и не более, мы всё же находимся на форуме, посвящённом программированию.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    я не провожу каких-то сложных математических вычислений в уме
    Это не исключает ошибок от человеческого фактора.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Как же лихо ты упускаешь составление формулы, с которой страдает достаточно много народа, что пользуется твоим способом (за пруфами можешь на p-i сходить, глянув какой-нибудь раздел с командами, например). Не говоря уже о случаях, когда у нас есть несколько разных строк :)
    Если ты про вероятность ошибки при подсчёте длины форматируемых значений, то я уже говорил, и не раз, что она и при твоём подходе останется. Избавиться от неё можно разве что лишь написав какую-нибудь программу с графическим интерфейсом специально для подсчёта. Но, во-первых, ИМХО, это того не стоит, а во-вторых, это не исключит человеческого фактора полностью (вместо неправильного подсчёта будет вероятность неправильного ввода данных).


    Цитата Сообщение от DeimoS Посмотреть сообщение
    И ты, вроде, всегда за компактность кода ведь, не? Противник "развернутой" записи, ибо нужно экономить вертикальное пространство. Как-то странно от тебя слышать, что вариант, который и больше времени занимает, и усложняет/раздувает код - эт норм. Хотя нет, я понимаю почему ты так говоришь, но не понимаю, почему предпочитаешь игнорировать все проблемы своего метода, которые перетекли из "ручного" подсчёта и приумножились?
    Ты точно что-то путаешь, я, наоборот, против чрезмерной экономии вертикального пространства, т.к. это приводит к длинным строкам кода, из-за которых постоянно приходиться тянуться к полосе горизонтальной прокрутки в редакторе (сначала чтобы прочитать строку до конца, а затем чтобы вернуть область видимости в прежнее положение, дабы можно было начать читать следующую строку).
    И что именно ты называешь "всеми проблемами"? То, что форматная строка отделена от вызова format? В простых примерах с малым количеством форматируемых аргументов это не проблема, а если аргументов много и форматная строка большая, то переводить взгляд придётся при любом подходе.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. #28
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если ты про вероятность ошибки при подсчёте длины форматируемых значений, то я уже говорил, и не раз, что она и при твоём подходе останется..
    Так я и не отрицаю этого. А ты почему-то предпочитаешь факт ошибки приписывать именно для "ручного" подсчёта, утверждая, что с твоим вариантом его не будет. Только ты почему-то упускаешь тот факт, что если человек не может "вручную" нормально подсчитать, делая ошибки по невнимательности, то с твоим вариантом у него не меньше шансов допустить ошибку при составлении формулы (а то и больше, ибо из-за явных вычитаний спецификаторов длина формулы увеличивается на 3 символа для каждого спецификатора).

    И смотри как получается на деле.
    Ты приписываешь своему методу более точный подсчёт, ибо при "ручном" подсчёте есть шанс ошибиться, но факт в том, что и твой вариант не защищён от ошибок при написании формулы (и упор на меньшее число ошибок ты делаешь как сейчас, так и в теме с "разрушением мифов").
    Ты говоришь про скорость изменения размера массива при изменении строки без изменения спецификаторов, но почему-то умалчиваешь, что в большинстве случаев само расписывание всей этой мишуры со "static const" и "sizeof" будет отнимать больше времени, чем "ручной" подсчёт. А с учётом того, что большая часть строк в скриптах никогда и не меняется, на деле ты лишь теряешь кучу времени с таким вот методом подсчёта.

    И, если говорить про ту тему с мифом, то ты почему-то делаешь упор на то, что при "ручном" подсчёте размер массива обязательно записывается одним числом, что крайне странно.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ты точно что-то путаешь, я, наоборот, против чрезмерной экономии вертикального пространства, т.к. это приводит к длинным строкам кода, из-за которых постоянно приходиться тянуться к полосе горизонтальной прокрутки в редакторе (сначала чтобы прочитать строку до конца, а затем чтобы вернуть область видимости в прежнее положение, дабы можно было начать читать следующую строку).
    Про горизонтальное пространство и так понятно. Я тебе говорю, например, про такие ситуации:
    PHP код:
    if(IsPlayerAdmin(playerid))
    {
        
    SendClientMessage(playerid, -1"Вы админ");

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

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    И что именно ты называешь "всеми проблемами"? То, что форматная строка отделена от вызова format? В простых примерах с малым количеством форматируемых аргументов это не проблема, а если аргументов много и форматная строка большая, то переводить взгляд придётся при любом подходе.
    Давай поступим проще: распиши все плюсы своего метода, которые ты видишь в нём. Прямо форумным списком. А я уже в следующем сообщении рапишу минусы твоего метода и преимущества "ручного" подсчёта
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #29
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А ты почему-то предпочитаешь факт ошибки приписывать именно для "ручного" подсчёта, утверждая, что с твоим вариантом его не будет.
    Это уже твои додумки, не более. Я такого не утверждал (или, во всяком случае, никогда не намеревался утверждать). Ок, ещё раз:
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    чем больше вещей стараешься делать в уме, тем больше вероятность ошибки
    и таких вещей больше в твоём методе за счёт подсчёта в уме части формулы. Чисто логика.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ты говоришь про скорость изменения размера массива при изменении строки без изменения спецификаторов, но почему-то умалчиваешь, что в большинстве случаев само расписывание всей этой мишуры со "static const" и "sizeof" будет отнимать больше времени, чем "ручной" подсчёт.
    Во-первых, если ты про данное обсуждение, то я этого не упоминаю только потому, что ты сам уже сказал об этом. Зачем повторять одно и то же дважды?
    Во-вторых, я уже не раз говорил, что мой метод для тех, кому важна правильность подсчёта и скорость отходит на второй план.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    И, если говорить про ту тему с мифом, то ты почему-то делаешь упор на то, что при "ручном" подсчёте размер массива обязательно записывается одним числом, что крайне странно.
    Не припоминаю, чтобы писал о таком в цикле уроков про мифы. Если же ты про урок с моим методом подсчёта, я уже давно начал готовить обновлённый вариант с исправлением множества недочётов и планирую закончить его, когда появится свободное время после открытия Pro-Pawn Wiki.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Про горизонтальное пространство и так понятно. Я тебе говорю, например, про такие ситуации:
    PHP код:
    if(IsPlayerAdmin(playerid))
    {
        
    SendClientMessage(playerid, -1"Вы админ");

    Если мне не изменяет память, не так давно ты мне писал на этот счёт, говоря, что скобки тут лишние и лишь тратят вертикальное пространство.
    Сколько не изучал чужой код на Си-подобных языках, видел подобное только когда скобки есть ещё и в ветке else, внутри которой больше одного предложения. И если в каком-то коммите после изменений в ветке if (без else) оставалось только одно предложение, фигурные скобки, как правило, убирались. Правда, фигурные скобки в каждом if прописаны обязательным требованием в нескольких популярных проектах на JavaScript - не знаю, почему (могу предположить, что сообщество просто подхватило это правило на волне хайпа какого-нибудь очередного модного фреймворка, в котором это правило было изначально из-за личных предпочтений одного автора).
    Поэтому уверен, практически любой адекватный программист (любители смузиJavaScript не в счёт :) ) скажет, что от фигурных скобок в твоём примере попросту нет никакой пользы. Скажешь тогда, что каждый программист - ярый сторонник экономии вертикального пространства?


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Давай поступим проще: распиши все плюсы своего метода, которые ты видишь в нём. Прямо форумным списком. А я уже в следующем сообщении рапишу минусы твоего метода и преимущества "ручного" подсчёта
    Скажу как есть: я устал повторять, что мой метод не избавляет от всех ошибок (хоть и снижает вероятность конкретных видов ошибок за счёт автоматизации) и он больше подходит для тех, кому точность расчётов важнее скорости набора текста на клавиатуре.

    Предлагаю такой вариант: я распишу все плюсы и минусы (по мере своих знаний) в обновлённом уроке, о котором упомянул выше, и там ты попробушь доказать, что мой метод неправильный. Тем более, это будет куда более приемлемое место для подобных обсуждений (напомню, мы сейчас находимся в теме с мануалом; не можем же мы вечно "угонять" чужую тему?)
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. #30
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Часть высказываний оставлю без ответа, ибо мы уже от темы отходить начали и это больше в полемику превратилось. Без обид

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Это уже твои додумки, не более. Я такого не утверждал (или, во всяком случае, никогда не намеревался утверждать). Ок, ещё раз:
    "чем больше вещей стараешься делать в уме, тем больше вероятность ошибки"
    и таких вещей больше в твоём методе за счёт подсчёта в уме части формулы. Чисто логика.
    Ты действительно считаешь, что сделать ошибку, отнимая в уме по одному символу от получившегося числа, гораздо легче, чем составлять формулу для нескольких строк с кучей спецификаторов в твоём варианте?


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Не припоминаю, чтобы писал о таком в цикле уроков про мифы.
      Открыть/закрыть

    Тут ты описываешь вариант с формулой так, будто он возможен только в твоём варианте (иначе непонятно зачем ты вообще этот пункт написал)

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Скажу как есть: я устал повторять, что мой метод не избавляет от всех ошибок (хоть и снижает вероятность конкретных видов ошибок за счёт автоматизации) и он больше подходит для тех, кому точность расчётов важнее скорости набора текста на клавиатуре.
    Ну ладно, не так выразился. Не от всех ошибок, а от каких-то конкретных.
    В любом случае, снижая вероятность допустить ошибку, например, при подсчёте размера строки, ты увеличиваешь вероятность допустить ошибку при составлении формулы, так как она становится более громоздкой.
    Я, собственно, тоже устал повторять, что практически каждое твоё "снижение вероятности" имеет негативные последствия, которые, по сути, нивелируют всю пользу. И доказательства моих слов лежат в открытом доступе на том же p-i, где люди, видимо, начитавшись твоих статей, пытаются всунуть твой способ во все возможные щели, но на деле делают только хуже, либо усложняя код, либо составляя неправильно формулу.
    КПД у твоего метода такой, что польза начинает проявляться только на строках, которые очень часто изменяются (а таких не так уж и много бывает). В остальных ситуациях гораздо разумнее потратить чуть больше времени и внимания (хотя, при должной сноровке, его может тратиться и меньше, как я уже выше говорил), но сделать код более компактным, простым и читаемым, а не раздувать его на кучу строк ради ситуаций, которые никогда и не случатся (я про изменение строки сейчас говорю, если что).
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 3 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •