1. Си / Говнокод #2302

    +99.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #include "org_herac_tuxguitar_player_impl_midiport_oss_MidiSystem.h"
    ...
    JNIEXPORT jlong JNICALL Java_org_herac_tuxguitar_player_impl_midiport_oss_MidiSystem_malloc(JNIEnv* env, jobject obj) {
        ...
    }

    Взято из TuxGuitar

    Запостил: xaionaro, 19 Декабря 2009

    Комментарии (30) RSS

    • На подобии #2208, так что УГ.
      Ответить
      • Ну из другой программы, потому может быть интересно знать
        Ответить
    • Так с JNI по-другому и нельзя.
      Ответить
      • Почему это нельзя? Херак требует киллометровых названий? =)))
        чем хуже javaMidiSystemMalloc(); ?
        Ответить
    • и что?
      Ответить
    • ну как бы по требованиям к оформлению не положено более 5 символов в имени поля, да и литералы _ не следует так использовать. Но если по другому нельзя...
      Ответить
      • Кто ввел такое ограничение? Должно быть столько символов, что-бы было понятно. Естественно ограничение тоже есть, тк все хорошо в меру.
        Ответить
    • А чего все минусуют , я один что-ли считаю что это ненормально так хэдэры и методы называть?
      Ответить
      • +1
        Ответить
      • это уебанство я считаю. И не только в си
        Ответить
      • Ты один не занешь, что такое JNI и с чем его едят.
        Ответить
        • иди побегай
          чтобы ты всю жизнь такие хэдэры писал и функции
          Ответить
    • Честно говоря сдесь столько слов, но не на ёту это не приближает понимание, того что этот метод делает. Из-за большого кол-ва слов пришлось использовать сокращение. Видимо это ошибка проектирования, раз не возможно придумать внятное название для метода. В методе слишком много действий. Метод нужно разбить на маленькие методы, где можно выразить суть метода в пару слов.
      Ответить
    • И да, хорошее слово там есть: херак!
      А минусуют потому, что не выполнено пожелание: "на который без улыбки не взглянешь". Тут не до улыбок с такими именами...
      Ответить
      • Реально смешно. Плюсую. Выгнать мало. Таким нужно пальцы по локоть отгрызать. Херак! и все...
        Ответить
    • Не понимаю в чем проблема. Эта метода предназначена для использования из Java (JNI). Длинное имя - нэймспейс + класс + имя метода.
      Не уверен, что есть требование соблюдать такую конвенцию, но из названия метода понятно для какого класса она предназначен. Это НЕ говнокод.
      Ответить
      • Более того, подобные имена генерят JNI бриджы - из сишной проги вызывать явовские функции.
        Ответить
    • +1, не говнокод
      Ответить
    • Ни разу не говнокод. Всем гуглить Java Native Interface и втыкать.
      Ответить
      • Ваш Java Native Interface - чистой воды говнокод, раз там такое говнокодерство развели.
        Хотя я так понимаю, раз изучаешь Java - втыкать это придеться? Альтернативы нет?
        Ответить
    • Вы всерьез думаете, что это не говнокод?
      Java_org_herac_tuxguitar_player_impl_mid iport_oss_MidiSystem_malloc
      Ответить
    • >env, obj
      Ну и имена... Из типов JNIEnv* и jobject можно определить, что это enveroment и object. Зачем в именах повторять тип? Лучше-бы закодировали в именах - для чего туда кладут эти данные или прочий контекст.
      Ответить
    • org_herac_tuxguitar_player_impl_midiport _oss_MidiSystem.h
      Ну и хедер. Такое вижу первый раз. Многое видел, но что-бы так... O_o
      Ответить
    • Любую великую идею можно обговнять. Это же великая идея?
      Ответить
    • Ну вы даете, студенты. Вы еще файлы, сгенерированные flex-ом или yacc-ом сюда запостите и обзовите говнокодом. В данном случае все соответствует соглашениям об именовании... Другое дело, что JNI сам по себе монструозен, но это в любом случае не тема для данного сайта.
      Ответить
      • Монструозность любого кода - тема для этого сайта. ;)
        Ответить
      • Если какой-нибудь "гигант", типа Microsoft, напишет какой-нибудь говнокод. То, только из-за того, что это написал "гигант", считать говнокод не говнокодом - не стоит.
        Ответить
      • Во-первых не надо обзываться. Люди, которые занимаются по большей части строго сетевыми задачами (сервера/клиенты) даже не обязаны изучать всякие вещи наподобие JNI. Я уж не говорю про то, что даже знание о том, что такие имена востребованы не отменяет лично моего желания кинуть данный код сюда.

        Во-вторых, признайте сами, что даже если код был бы говнокодом, но уже известным вам, то он небыл бы вам интересен. Конкретно данный случай кода я лично считаю вполне наглядным примером "до чего дошли современные технологии". Вы, поскольку, возможно, знакомы с технологией JNI такому не удивляетесь, а потому от скуки возмущаетесь; а я вижу причину удивляться даже не смотря на то, что "так требует JNI". Ведь я не прошу называть это говнокодом, однако для тех, что не работал с данной техниологией, тут есть на что посмотреть. А ваше возмущение идёт не из того, что данный код вполне нормален, а из того, что вы и до данного поста кода знали про данную вынужденную меру и вам уже тупо неинтересно на это смотреть.
        Ответить
    • Боже мой. Успокойтесь уже. Один говорит "JNI", другой говорит "говнокод", и так в цикле уже хрен знает какой раз. Лично для мне кажется и то и другое неправильным.

      На всякий случай переформулирую. Уже понятно раз 5 по текущим комментариям, что существуют технологие требующие подобного именования (и не стоит ещё и ещё раз повторять за своими товарищами). Но не смотря на это, IMHO, стоит признать, что этот JNI - некий апофиоз длинных имён. Да и вообще, встретить такие вещи в коде как минимум неприятно.

      Если кто-то ещё попытается объяснить что это не является говнокодом, то прошу вас, не надо. Я понимаю что это вынужденный случай, просто пусть это увидят все те, кто никогда с таким не сталкивался, улыбнётся и пойдёт дальше.
      Ответить

    Добавить комментарий