• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Javadoc wie viel sollte man erklären?

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Hallo,

ich arbeite seit längerem an einem Mod und habe diesen seit längerem auch schon auf Github zugänglich gemacht.
Nun möchte ich auch Javadoc hinzufügen, nun das Problem ich habe sowas noch nie gemacht und hätte da einige fragen auf dem Gebiet.
1.Gibt es hilfreiche Kürzel die unter vielen Java Programmierern bekannt sind?
2.Sollte man es genau erklären damit neulinge dies auch als Tutorial nutzen können
oder doch eher grob das nur jemand es versteht der sich damit auskennt?

Ja frage 2 ist zwar eher eine frage der eigenen Meinung jedoch würde ich gerne wissen
was ihr bevorzugt wenn ihr euch beispielsweise den Quellcode von einem Programm anschaut.

3. Wie würdet ihr den unten angefügten Code mit Dokumentation bewerten?
4. Eine frage die mit dem Rest nicht viel zu tun hat aber wie kann ich ohne ArrayList mehrere werte bei einer Methode zurück geben z.B. 2 Integer?
(Müsste den Switch für das Alignment von unten in mehreren verschiedenen Methoden nutzen)
Code:
@SubscribeEvent(priority = EventPriority.NORMAL)
    public void onRenderHealtheBar(RenderGameOverlayEvent event)
    {
        if(loadConfig.DRPGui == true){
            if(event.type == event.type.HEALTH){
               
                /**
                * Creating all needed Variables
                */
               
                int currentHealth = (int) (79 * ( mc.thePlayer.getHealth()/mc.thePlayer.getMaxHealth()));
               
                int posX = 0;
                int posY = 0;
               
                List healthBarStats = loadConfig.HealthBar;
               
                Integer Type = (Integer) healthBarStats.get(0);
               
                Enum_GuiAlignment Alignment = (Enum_GuiAlignment) healthBarStats.get(1);
               
                Integer PosX = (Integer) healthBarStats.get(2);
               
                Integer PosY = (Integer) healthBarStats.get(3);
               
                Boolean NumericHealth = (Boolean) healthBarStats.get(4);
               
                /**
                * Setting the Main Coordinates for the Alignment
                */
                switch(Alignment){
                case BOTTOM:
                    posX = event.resolution.getScaledWidth() / 2 -40;
                    posY = event.resolution.getScaledHeight()-9;
                    break;
                case LEFT:
                    posX = 0;
                    posY = event.resolution.getScaledHeight() / 2 - 4;
                    break;
                case RIGHT:
                    posX = event.resolution.getScaledWidth() - 81;
                    posY = event.resolution.getScaledHeight() / 2 -4;
                    break;
                case TOP:
                    posX = event.resolution.getScaledWidth()/2 -40;
                    posY = 0;
                    break;
                case CENTER:
                    posX = event.resolution.getScaledWidth()/2 -40;
                    posY = event.resolution.getScaledHeight()/2 -4;
                    break;
                case TOPLEFT:
                    posX = 0;
                    posY = 0;
                    break;
                case TOPRIGHT:
                    posX = event.resolution.getScaledWidth() -81;
                    posY = 0;
                    break;
                case BOTTOMLEFT:
                    posX = 0;
                    posY = event.resolution.getScaledHeight()-9;
                    break;
                case BOTTOMRIGHT:
                    posX = event.resolution.getScaledWidth()-81;
                    posY = event.resolution.getScaledHeight()-9;
                    break;
                default:
                    posX = event.resolution.getScaledWidth() / 2 -40;
                    posY = event.resolution.getScaledHeight()-9;
                    break;
                }
               
                /**
                * Adding the user set Coordinates of the Health bar to the Alignment Coordinates
                */
                posX = posX + PosX;
                posY = posY + PosY;
               
                /**
                * Binding the Texture File will be made using a switch in future versions because of different Gui Types
                */
                this.mc.getTextureManager().bindTexture(texturepath);
                GL11.glEnable(GL11.GL_BLEND);
                GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
               
                this.drawTexturedModalRect(posX, posY, 0, 16, 81, 9);
               
               
                /**
                * Drawing the Health and also a Potion effect that affects the Health if one is existing
                */
                this.drawTexturedModalRect(posX +1, posY +1, 0, 25, currentHealth,7);
               
                if((int)mc.thePlayer.getAbsorptionAmount() != 0){
                    this.drawTexturedModalRect(posX+1, posY +1, 0, 32, currentHealth,7);
                }
                if(mc.thePlayer.isPotionActive(Potion.poison)){
                    this.drawTexturedModalRect(posX+1, posY +1, 0, 39, currentHealth,7);
                }
                if(mc.thePlayer.isPotionActive(Potion.wither)){
                    this.drawTexturedModalRect(posX+1, posY +1, 0, 46, currentHealth,7);
                }
               
                /**
                * Writing the Health Amount in Numbers to the Health Bar.
                * The bottom one is used by default the upper one is for the case that the player has additional health.
                * (For example you get additional health when you eat an Enchanted Golden Apple)
                */
                if(NumericHealth){
                   
                    if((int)mc.thePlayer.getAbsorptionAmount() > 0 ){
                        healthDisplay = (int)mc.thePlayer.getHealth() + "/" +(int) mc.thePlayer.getMaxHealth() + "+" + (int) mc.thePlayer.getAbsorptionAmount();
                    }else{
                        healthDisplay = (int)mc.thePlayer.getHealth() + "/" +(int) mc.thePlayer.getMaxHealth();
                    }
                   
                    this.mc.fontRendererObj.drawString(healthDisplay, posX+40 - (healthDisplay.length()*3), posY+1, 0xffFFFFFF);
                }
                /**
                * Setting the used Texture back to Minecrafts default one (otherwise Breath bar and the other stuff would use the wrong texture File)
                */
                this.mc.getTextureManager().bindTexture(new ResourceLocation("textures/gui/icons.png"));
               
                /**
                * Canceling the Event so the default Health bar isn't rendered.
                */
                event.setCanceled(true);
            }
        }
    }

Vielen Dank im Voraus.
- JTK222
 

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
Hey,

ein beispiel:
Javascript:
/**
     * Sets the score of the given player
     *
     * @param player The player whose score is to set
     * @param value  The value to set the score to
     */
    public void setScore( Player player, int value ) {

Normalerweise reicht eine kurze Zeile über Sinn und Funktion der Methode, sowie eine Beschreibung der Parameter. Optional kommen dann auch eine Beschreibung des Objektes hinzu, die eine Methode (evtl.) zurückgibt. Hinweise auf Exceptions sind auch immer ganz sinnvoll. Du hast sehr viel innerhalb der Methode erklärt, da würde ich zwecks übersichtlichkeit mit single line ( '//' ) dokumentieren.

Natürlich gibt es auch Kürzel, aber da sind die meisten leute ziemlich eigen. Hilfreich sind allerdings Verlinken zu den Sourceklassen und so weiter.

Alternativen zu einer ArrayList sind Arrays, Sets oder Maps. Wenn du allerdings mehrere Sachen zurückgeben möchtest kommst du um irgendeine Art der Collection bzw. ein Array nicht drumherum.



Wenn ich mir Sourcecode angucken möchte, verschaffe ich mir zu allererst eine Übersicht über die Aufteilung der Klassen und Packages und arbeite mich dann aus der Hauptklasse in alle Unterbereiche vor.
 
Zuletzt bearbeitet:

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Vielen dank für die paar Tipps habe an einiges hiervon nicht gedacht (also @param und so :))
Auch danke für den Vorschlag mit bei einzelnen Zeilen mit // zu arbeiten habe ich total vergessen :D

Ist für die Rückgabe von mehreren werten pro Methode irgendetwas besonders empfehlenswert?
Falls nicht werde ich es ganz einfach mit einer ArrayList regeln.

P.s. was meinst du mit Verlinkung zu den Source Classen und wie kann ich diese erstellen?
 
Oben