Да простит меня великий Visor....Не удержалсо


Не заметил)
 
Код:
/**
*
* @author Visor123
* L2Emu Enterprise Server
*/
public class L2ManagementEventGroupEngine extends L2EventGroupEngine
{
    public L2ManagementEventGroupEngine(String name, String command)
    {
        super(name, command);
    }

    @Override
    public boolean useAdminCommand(L2PcInstance player, String command)
    {
        if (Config.ENT_TESTEVENTS)
            _log.info("L2ManagementEventGroupEngine "+getName()+" useAdminCommand player="+player.getName()+" command="+command);
 
        if (command.equalsIgnoreCase(getCommand()))
        {
            showMainPage(player);
        }
        else if (command.startsWith(getCommand()+"_show")
                || command.startsWith(getCommand()+"_status")
                || command.startsWith(getCommand()+"_edit")
                || command.startsWith(getCommand()+"_save")
                || command.startsWith(getCommand()+"_load")
                || command.startsWith(getCommand()+"_schedule")
                || command.startsWith(getCommand()+"_totaliser")
         
                || command.startsWith(getCommand()+"_join")
                || command.startsWith(getCommand()+"_start")
                || command.startsWith(getCommand()+"_teleport")
                || command.startsWith(getCommand()+"_abort")
                || command.startsWith(getCommand()+"_finish")
         
                || command.startsWith(getCommand()+"_auto")
                || command.startsWith(getCommand()+"_sit")
                || command.startsWith(getCommand()+"_stand")
                || command.startsWith(getCommand()+"_kick")
                )
        {
            String eventName = command.substring(getCommand().length()+6);
            if (command.startsWith(getCommand()+"_schedule")
                    || command.startsWith(getCommand()+"_teleport"))
                eventName = command.substring(getCommand().length()+10);
            else if (command.startsWith(getCommand()+"_finish") || command.startsWith(getCommand()+"_status"))
                    eventName = command.substring(getCommand().length()+8);
            else if (command.startsWith(getCommand()+"_start")
                    || command.startsWith(getCommand()+"_abort")
                    || command.startsWith(getCommand()+"_stand"))
                eventName = command.substring(getCommand().length()+7);
            else if (command.startsWith(getCommand()+"_sit"))
                eventName = command.substring(getCommand().length()+5);
            else if (command.startsWith(getCommand()+"_totaliser"))
                eventName = command.substring(getCommand().length()+11);
             
            try
            {
                String[] params = eventName.split(" ");
                if (Config.ENT_TESTEVENTS)
                    _log.info("L2ManagementEventEngine "+getName()+" show/edit... eventName="+params[0]+" params.length="+params.length);
                if (_eventInstances.containsKey(params[0]))
                    _eventInstances.get(params[0]).useAdminCommand(player, command, params);
                else
                {
                    player.sendMessage("Event instance with name="+params[0]+" not found");
                    showMainPage(player);
                }
             
                return true;
            }
            catch (Exception e) {
                _log.warn(e.getMessage());
            }
        }
        else if (command.startsWith(getCommand()+"_del"))
        {
            try
            {
                String eventName = command.substring(getCommand().length()+5);
                String[] params = eventName.split(" ");
                if (Config.ENT_TESTEVENTS)
                    _log.info(getName()+" eventName="+params[0]+" params.length="+params.length);
                if (_eventInstances.containsKey(params[0]) && params.length > 1 && params[1].equalsIgnoreCase("y"))
                {
                    L2EventGroupEngineInstance event = _eventInstances.remove(params[0]);
                    event.deleteData();
                    saveData();
                    player.sendMessage(getName()+" data saved to DB");
                }
                else if (params.length <= 1 || !params[1].equalsIgnoreCase("y"))
                    player.sendMessage("For delete event instance need enter character `y`");
             
                showMainPage(player);
                return true;
            }
            catch (Exception e) {
                _log.warn(e.getMessage());
            }
        }
        else if (command.startsWith(getCommand()+"_create"))
        {
            try
            {
                String eventName = command.substring(getCommand().length() + 8);
         
                if (Config.ENT_TESTEVENTS)
                    _log.info(getName()+"eventName="+eventName);
                if (!eventName.isEmpty() && eventName.length() > 0 && !eventName.contains(" ") && eventName.length() <= 16)
                    createEventInstance(eventName);
         
                else if (!eventName.isEmpty() && eventName.contains(" "))
                    player.sendMessage("Name event need without spaces");
         
                else if (!eventName.isEmpty() && eventName.length() > 16)
                    player.sendMessage("Name event need have 1-16 characters");
         
                showMainPage(player);
            }
            catch (Exception e) {
                _log.warn(e.getMessage());
            }
        }
        return super.useAdminCommand(player, command);
    }

    protected void showMainPage(L2PcInstance player)
    {
        NpcHtmlMessage adminReply = new NpcHtmlMessage(5);

        TextBuilder replyMSG = new TextBuilder("<html><title>"+getName()+"</title><body>");

        replyMSG.append("<table width=\"292\" bgcolor=\"666666\"><tr><td><font color=\"LEVEL\">[ "+getName()+" ]</font></td>"
                +"<td><button value=\"Back\" action=\"bypass -h " + "admin_events"+"\" width=75 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"</tr></table>");
        replyMSG.append("<br><center>Engine instances</center>");
        replyMSG.append("<table width=\"292\">");
        for (L2EventGroupEngineInstance event : _eventInstances.values())
        {
            replyMSG.append("<tr><td><font color=\"LEVEL\">"+event.getName()+"</font></td>"
                +"<td><button value=\"Show\" action=\"bypass -h " + getCommand()+"_show "+event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"<td><button value=\"Edit\" action=\"bypass -h " + getCommand()+"_edit "+event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"<td><button value=\"Delete\" action=\"bypass -h "  + getCommand()+"_del "+event.getName()+" $name"    + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"
                );
        }
        replyMSG.append("</table>");
        replyMSG.append("<table width=\"292\"><tr><td><edit var=\"name\" width=\"125\"></td>");
        replyMSG.append("<td><button value=\""+"Create New Event"+"\" action=\"bypass -h " + getCommand()+"_create $name" + "\" width=125 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
        replyMSG.append("</table>");
        replyMSG.append("</body></html>");

        adminReply.setHtml(replyMSG.toString());
        player.sendPacket(adminReply);
        // Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
        player.sendPacket(ActionFailed.STATIC_PACKET);
    }
}
С точки зрения ява-машины - ничего страшного, но нужно было оставить вторую проверку - выполнение кода не пошло бы хоть так, хоть эдак, никаких потерь по времени
Но с точки зрения написания - ***ец
Чет герычем попахивает, мдам.......

command.substring(getCommand().length()+5); еще меня особенно умиляет)
Берем строку, режем ее, вычленяем остаток - вуаля, команда!
Апну еще раз, чтобы человек не забывал об этом факте.
getCommand() возвращает различные строки, в зависимости от конкретной инстансы движка. Если ты этого не знал - то это твоя проблема.
Человек обосрался весьма эпично, хотел нагадить на других, а обгадился сам.

Давай, обсыкайся, попробуй переврать такой факт.
 
Последнее редактирование:
Апну еще раз, чтобы человек не забывал об этом факте.
getCommand() возвращает различные строки, в зависимости от конкретной инстансы движка. Если ты этого не знал - то это твоя проблема.
Человек обосрался весьма эпично, хотел нагадить на других, а обгадился сам.

Давай, обсыкайся, попробуй переврать такой факт.

Посмотри в сторону thymeleaf, velocity на досуге.
 
Посмотри в сторону thymeleaf, velocity на досуге.
Факт состоит в том, что неадекват GenCloud обосрался и эта тема это доказывает и подтверждает. Обоврать этот факт он не может.
А на досуге, то конечно спасибо за советы.
 
Факт состоит в том, что неадекват GenCloud обосрался и эта тема это доказывает и подтверждает. Обоврать этот факт он не может.
А на досуге, то конечно спасибо за советы.
Я к теме не имею никакого отношения, я по поводу разных реплейсов и остального аппенда срингов. То что я назвал можно поюзать, хорошие фреймы.
 
Я к теме не имею никакого отношения, я по поводу разных реплейсов и остального аппенда срингов. То что я назвал можно поюзать, хорошие фреймы.
Ты пишешь, что к теме не имеешь отношения, но влез в нее давать советы. Итак.
Я так понимаю, что ты не понял почему я не просто так написал, что дегенерат, который кидается на людей, обосрался и что этот факт нельзя изменить.

Что ты собрался аппендить в этом классе? Или где ты и как поюзаешь хорошие фреймы? И почему ты думаешь, что нужно соединять какие-то строки в этом конкретном классе? Проще говоря - в чем по твоему говнокод?
Но следует учесть оптимизацию времени создания объекта и учесть специфику времени выполнения. Или какая цель в аппенде строк и применении хороших фреймов?
Прямо пример.
 
Последнее редактирование:
Что ты собрался аппендить в этом классе? Или где ты и как поюзаешь хорошие фреймы? И почему ты думаешь, что нужно соединять какие-то строки в этом конкретном классе? Проще говоря - в чем по твоему говнокод?
Но следует учесть оптимизацию времени создания объекта и учесть специфику времени выполнения. Или какая цель в аппенде строк и применении хороших фреймов?
Прямо пример.
Я не Мангол, но все таки форум и открытый дискас, поэтому напишу.
С помощью того же Apache Velocity можно будет полностью избавиться от таких методов, как "showMainPage" и похожих. Все таки уже давно не "лихие девяностые", чтобы держать куски html, в коде, а тем более делать конкацию строк, при возможности использования StringBuilder'а. Это все не критично, но все равно, не слишком красиво, как по мне.
Пример одной из моих html с использованием Velocity:
Код:
<html><head><title>Get zones</title></head>
<body><center>

<br>#color("LEVEL" "Список текущих зон")
<table width=260>
<tr>
<td>#color("cccc99" "ID")</td>
<td>#color("cccc99" "Name")</td>
<td>#color("cccc99" "Type")</td>
<td>#color("cccc99" "Flags")</td>
<td>#color("cccc99" "Danger type")</td>
</tr>

#set($flags = $ZoneFlags.values())
#set($zones = $target.getZones())
#foreach($zone in $zones)
   <tr>
   <td>$zone.getId()</td>
   <td>$zone.getName()</td>
   <td>$zone.getImplName()</td>
   <td>
   #set($zoneFlags = $zone.getFlags())
   #foreach($flag in $flags)
     #if($flag.isFlag(zoneFlags))
       $flag.name()
     #end
   #end
   </td>
   <td>
   #set($dangerType = $zone.getDangerType())
   $dangerType.name()
   </td>
   </tr>
#end
</table>

<br>#color("LEVEL" "Текущие флаги:")
</center>
<table width=260>
<tr>
<td>#color("cccc99" "Name")</td>
<td>#color("cccc99" "Count")</td>
</tr>

#set($zoneCounters = $target.getZoneFlagCounters())
#set($i = 0)
#foreach($counter in $zoneCounters)
   #set($color = "ffffff")
   #if($counter == 0)
     #set($color = "999999")
   #end
   <tr>
   <td><font color=$color>$flags[$i].name()</font></td>
   <td><font color=$color>$counter</color></td>
   </tr>
   #set($i = $i + 1)
#end
</table>

</body>
</html>
 
Последнее редактирование:
Ты пишешь, что к теме не имеешь отношения, но влез в нее давать советы. Итак.
Я так понимаю, что ты не понял почему я не просто так написал, что дегенерат, который кидается на людей, обосрался и что этот факт нельзя изменить.

Что ты собрался аппендить в этом классе? Или где ты и как поюзаешь хорошие фреймы? И почему ты думаешь, что нужно соединять какие-то строки в этом конкретном классе? Проще говоря - в чем по твоему говнокод?
Но следует учесть оптимизацию времени создания объекта и учесть специфику времени выполнения. Или какая цель в аппенде строк и применении хороших фреймов?
Прямо пример.
Дока вело и тима есть в свободном доступе. Так же там есть примеры.
Код:
   protected void showMainPage(L2PcInstance player)
    {
        NpcHtmlMessage adminReply = new NpcHtmlMessage(5);

        TextBuilder replyMSG = new TextBuilder("<html><title>"+getName()+"</title><body>");

        replyMSG.append("<table width=\"292\" bgcolor=\"666666\"><tr><td><font color=\"LEVEL\">[ "+getName()+" ]</font></td>"
                +"<td><button value=\"Back\" action=\"bypass -h " + "admin_events"+"\" width=75 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"</tr></table>");
        replyMSG.append("<br><center>Engine instances</center>");
        replyMSG.append("<table width=\"292\">");
        for (L2EventGroupEngineInstance event : _eventInstances.values())
        {
            replyMSG.append("<tr><td><font color=\"LEVEL\">"+event.getName()+"</font></td>"
                +"<td><button value=\"Show\" action=\"bypass -h " + getCommand()+"_show "+event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"<td><button value=\"Edit\" action=\"bypass -h " + getCommand()+"_edit "+event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"<td><button value=\"Delete\" action=\"bypass -h "  + getCommand()+"_del "+event.getName()+" $name"    + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"
                );
        }
        replyMSG.append("</table>");
        replyMSG.append("<table width=\"292\"><tr><td><edit var=\"name\" width=\"125\"></td>");
        replyMSG.append("<td><button value=\""+"Create New Event"+"\" action=\"bypass -h " + getCommand()+"_create $name" + "\" width=125 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
        replyMSG.append("</table>");
        replyMSG.append("</body></html>");

        adminReply.setHtml(replyMSG.toString());
        player.sendPacket(adminReply);
        // Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
        player.sendPacket(ActionFailed.STATIC_PACKET);
    }
Так же такой код можно будет собирать куда лучшим способом
Но я понел что таким как ты лучше вообще ничего не советовать. Тебе лишь бы свою желчь вылить на ровном месте, и не важно несешь ты полную херню или нет, главное что ты всегда прав.
П.С. Хочу увидеть где я сказал говнокод. Данный случай это случай когда не совсем удобно работать с таким кодом, я бы даже сказал совсем не удобно с ним работать, когда есть фреймы которые могут облегчить жизнь и читаемость данного кода.
 
Последнее редактирование:
Дока вело и тима есть в свободном доступе. Так же там есть примеры.
Код:
   protected void showMainPage(L2PcInstance player)
    {
        NpcHtmlMessage adminReply = new NpcHtmlMessage(5);

        TextBuilder replyMSG = new TextBuilder("<html><title>"+getName()+"</title><body>");

        replyMSG.append("<table width=\"292\" bgcolor=\"666666\"><tr><td><font color=\"LEVEL\">[ "+getName()+" ]</font></td>"
                +"<td><button value=\"Back\" action=\"bypass -h " + "admin_events"+"\" width=75 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"</tr></table>");
        replyMSG.append("<br><center>Engine instances</center>");
        replyMSG.append("<table width=\"292\">");
        for (L2EventGroupEngineInstance event : _eventInstances.values())
        {
            replyMSG.append("<tr><td><font color=\"LEVEL\">"+event.getName()+"</font></td>"
                +"<td><button value=\"Show\" action=\"bypass -h " + getCommand()+"_show "+event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"<td><button value=\"Edit\" action=\"bypass -h " + getCommand()+"_edit "+event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"<td><button value=\"Delete\" action=\"bypass -h "  + getCommand()+"_del "+event.getName()+" $name"    + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"
                );
        }
        replyMSG.append("</table>");
        replyMSG.append("<table width=\"292\"><tr><td><edit var=\"name\" width=\"125\"></td>");
        replyMSG.append("<td><button value=\""+"Create New Event"+"\" action=\"bypass -h " + getCommand()+"_create $name" + "\" width=125 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
        replyMSG.append("</table>");
        replyMSG.append("</body></html>");

        adminReply.setHtml(replyMSG.toString());
        player.sendPacket(adminReply);
        // Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
        player.sendPacket(ActionFailed.STATIC_PACKET);
    }
Так же такой код можно будет собирать куда лучшим способом
Но я понел что таким как ты лучше вообще ничего не советовать. Тебе лишь бы свою желчь вылить на ровном месте, и не важно несешь ты полную херню или нет, главное что ты всегда прав.
П.С. Хочу увидеть где я сказал говнокод. Данный случай это случай когда не совсем удобно работать с таким кодом, я бы даже сказал совсем не удобно с ним работать, когда есть фреймы которые могут облегчить жизнь и читаемость данного кода.
Какую желчь, ты видишь кто эту тему создал?
Ты не сказал "говнокод", но начал подпрягаться - советы давать начал мне. Это есть в паре сообщений выше.
А чего ты не стал давать советы неадеквату, который эту тему создал?
Там не просто желчь - там говнище хлещет и пердак уже сгорел.

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

command.substring(getCommand().length()+5); еще меня особенно умиляет)
Берем строку, режем ее, вычленяем остаток - вуаля, команда!
Денегерат, ты настолько тупой, что взял неиспользуемый в гейм-сервере класс :Wahaha:
Ты настолько эпично обосрался в этой теме, что этот шедевр уже эпохальный.

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

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

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

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

    Med_ved

    Баллов: 1
    За клоунаду :D
Дока вело и тима есть в свободном доступе. Так же там есть примеры.
Код:
   protected void showMainPage(L2PcInstance player)
    {
        NpcHtmlMessage adminReply = new NpcHtmlMessage(5);

        TextBuilder replyMSG = new TextBuilder("<html><title>"+getName()+"</title><body>");

        replyMSG.append("<table width=\"292\" bgcolor=\"666666\"><tr><td><font color=\"LEVEL\">[ "+getName()+" ]</font></td>"
                +"<td><button value=\"Back\" action=\"bypass -h " + "admin_events"+"\" width=75 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"</tr></table>");
        replyMSG.append("<br><center>Engine instances</center>");
        replyMSG.append("<table width=\"292\">");
        for (L2EventGroupEngineInstance event : _eventInstances.values())
        {
            replyMSG.append("<tr><td><font color=\"LEVEL\">"+event.getName()+"</font></td>"
                +"<td><button value=\"Show\" action=\"bypass -h " + getCommand()+"_show "+event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"<td><button value=\"Edit\" action=\"bypass -h " + getCommand()+"_edit "+event.getName() + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"
                +"<td><button value=\"Delete\" action=\"bypass -h "  + getCommand()+"_del "+event.getName()+" $name"    + "\" width=60 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>"
                );
        }
        replyMSG.append("</table>");
        replyMSG.append("<table width=\"292\"><tr><td><edit var=\"name\" width=\"125\"></td>");
        replyMSG.append("<td><button value=\""+"Create New Event"+"\" action=\"bypass -h " + getCommand()+"_create $name" + "\" width=125 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>");
        replyMSG.append("</table>");
        replyMSG.append("</body></html>");

        adminReply.setHtml(replyMSG.toString());
        player.sendPacket(adminReply);
        // Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
        player.sendPacket(ActionFailed.STATIC_PACKET);
    }
Так же такой код можно будет собирать куда лучшим способом
Но я понел что таким как ты лучше вообще ничего не советовать. Тебе лишь бы свою желчь вылить на ровном месте, и не важно несешь ты полную херню или нет, главное что ты всегда прав.
П.С. Хочу увидеть где я сказал говнокод. Данный случай это случай когда не совсем удобно работать с таким кодом, я бы даже сказал совсем не удобно с ним работать, когда есть фреймы которые могут облегчить жизнь и читаемость данного кода.
А чем отличается TextBuilder от StringBuilder ? :Huh:
 
Начнем с начала.
Ты парой сообщений выше вылез подпрягаться за неадеквата, которого ты не знаешь и не знаешь прав ли он вообще. Ты просто увидел код и слова дегенерата.
Ты видимо решил, что денегерат - это жертва, а я на него нападаю? Нет - дегенерат это не жертва, это гниль - которая из него лезет до сих пор, как только я тыкнул в него куканом. Я не пишу гадости нормальным людям, но получается, что ты себя ассоциировал с этим недоумком, который выложил неиспользованный гейм-сервером класс пытаясь нагадить мне.

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

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

Проблема выродков в том, что я не пытаюсь искать группу, чтобы быть частью сильной группы, и поэтому быстро замечаю их. Возможность эта в том, что я не обременяю себя мыслями, что незнакомый мне человек может написать на форуме правду. И конечно достаточно большой жизненный опыт в офисных интригах. Выродки хорошо имитируют обычных людей, кривляются, умничают и т.д.
Смотрите критически на то, что вам говорят и пишут, не полагайтесь на псевдо-экспертов - часто это могут оказаться дегенераты, подсовывающие вам очередную порцию вранья.
И да, питушок ты наш - завалился бы и дальше сидел бы с кокс нюхал, как обычно ты и делаешь.
P.S. тронешь говно, вонять будет -> тронешь визора.... нутыпонел
 
Последнее редактирование модератором:
И да, питушок ты наш - завалился бы и дальше сидел бы с кокс нюхал, как обычно ты и делаешь.
P.S. тронешь говно, вонять будет -> тронешь визора.... нутыпонел
Обосрался, так рот закрой и не воняй. Уже показано какое-ты гнилое.
 
Обосрался, так рот закрой и не воняй. Уже показано какое-ты гнилое.
Бозечьки, бозечьки. Воняет твоя немытая жопа после получасового дрыстания дерьма.
P.S. "какое-ты" это пишется без дефиса.
 
Бозечьки, бозечьки. Воняет твоя немытая жопа после получасового дрыстания дерьма.
P.S. "какое-ты" это пишется без дефиса.
Да с твоей жопой явно что-то не так :Wahaha:
Ты не осилил обоврать факт, что ты явный дебил? Расскажи людям, зачем ты дебил взял не используемый класс и написал его в первом посте?

Поскольку говнокода в коде не найдено, прошу администрацию переместить тему в разоблачения ...
В теме хорошо разоблачен выставляющий себя экспертом клоун GenCloud.

Для тех, кто хочет еще улыбнуться с потуг GenCloud - это история, как покемон за свой ненужный код придумал цену в 18к рублей и .
 
Последнее редактирование:
На самом деле, там действительно говно код.
Доказательства:
1. Много конкатенаций и вызовов getCommand(). Результат вызова надо закэшировать. Да и в принципе лучше явно команду указать, а не конкатенировать.
2. Вместо этого: "getCommand().length()+6" намного лучше получить длину строки с ЯВНОЙ команды, а не с этого.
3. Вместо 3-х вызовов eventName.isEmpty() намного логичнее сделать 1 и закешировать.
4. Конкатенация в TextBuilder - е

Итого: код имеет излишнюю нагрузку и почти не читаемый. Вывод - это говнокод.
НО! Лучше иметь работающий говнокод чем ненаписанный идеал.
 
Последнее редактирование:
На самом деле, там действительно говно код.
Доказательства:
1. Много конкатенаций и вызовов getCommand(). Результат вызова надо закэшировать. Да и в принципе лучше явно команду указать, а не конкатенировать.
2. Вместо этого: "getCommand().length()+6" намного лучше получить длину строки с ЯВНОЙ команды, а не с этого.
3. Вместо 3-х вызовов eventName.isEmpty() намного логичнее сделать 1 и закешировать.
4. Конкатенация в TextBuilder - е

Итого: код имеет излишнюю нагрузку и почти не читаемый. Вывод - это говнокод.
НО! Лучше иметь работающий говнокод чем ненаписанный идеал.
getCommand() - команда может быть разной, я писал выше. Ее нельзя явно указать, это класс модели. Напиши пример кеширования команды, которая неизвестна на момент времени написания. То есть минимум 2 пункта поста выше - это бред.
Второе - разве обращение к переменной через метод ведет к копированию объекта и его передаче? Нет - объект передается по ссылке.
Конкатенция строк может быть в какой-то версии ява оптимизирована, и тогда "вдруг" это станет работать оптимизировано. Но оно и до и после не говнокод и не может им являтся, использование стандартных функций java не является говнокодом, если java не является говнокодом вообще.
3. Закешировать eventName.isEmpty() ?
4. Конкатенация в TextBuilder - фреймворк не менаяет подходов, он может что-то ускорить, но при этом модель кода не поменяется.

Нельзя любой не оптимизированный для данной версии java код называть говноком.
Пример - программы написанные на с++ и скомпиленные под конкретную платформу работают быстрее чем java - значить любое java-приложение говнокод?
Вот такой вот факт, что на самом деле там нет никакого говнокода. Все твои пункты являются как минимум спорными, а так вообще некорректными, как доказательство.
Опровергни.

Еще опровергни теперь ты факт номер 2 - этот класс не используется в сервере. Автоматически любые рассуждения теряют смысл, как вырванные из контекста. И этот факт доказывает, что чувак GenCloud настолько тупой, что даже не мог взять рабочий класс.
Опровергни.

Я так понимаю этот echipachenko тоже был в команде с GenCloud - или это только предположение?
Если же это так, то это выпрыгивание тоже автоматически цирковое, а не типа "объективное".

Тут рассуждение покемона GenCloud - который обосрался и не смог доказать, что даже нашел типа говнокод. Слово "говнокод" не формализовано и не равно слову "оптимизированный" или "не оптимизированный". Вопрос говнокода не доказан и может быть субъективным. Это факт номер 3.

Жду опровержения очевидных фактов.
 
Последнее редактирование:
1. Я более чем уверен что пока выполняется код метода, команда точно не поменяется, а это значит что getCommand() вернёт одинаковый результат.
А даже если меняется - то это в корне не правильно.
Ибо вы при первом вызове к примеру сравниваете результат с "предполагаемым значением", а так как команда может поменяться, то у Вас есть случай непопадания не под один ИФ, потому что при первой проверке команда была одна, а при второй другая, но она могла подойти под первый иф, в следствии чего обработка не запустится.
3. Имеется ввиду сделать так: boolean isEmpty = eventName.isEmpty(); if (!isEmpty) {....}
4. Во первых это не фреймворк. Во вторых конкатенация во всех подобных случаях ведёт к неявному созданию StringBuilder-a, смысл тогда юзать текстбилдер пропадает. И что бы Вы понимали, в чём отличия фреймворка от библиотекы: фреймворк дает Вам Flow и LifeCycle, которому Вы должны подчинятся.

Согласитесь, этот код не идеален. А вот используется этот класс или не используется - это уже не моё дело.
 
Последнее редактирование:
Назад
Сверху Снизу