Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

WhiteMike

Alter Hase

  • »WhiteMike« ist der Autor dieses Themas

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

1

19.05.2009, 21:22

[Stilfrage] Variablendeklaration in Methoden

Ich betrachte gerade eine Klasse von jemandem, der wirklich schönen Code produziert.

C-/C++-Quelltext

1
2
3
4
5
6
7
RossiBigInt RossiBigInt::operator>> (ulong shift_i)
{
RossiBigInt tmp;
RossiBigInt ret;

  tmp = *this;
  // ...


Er macht es so, dass er Variablen in seinen Methoden direkt als Erstes deklariert. Ich habe allerdings gelesen, dass man deren Deklaration so weit wie möglich nach hinten schieben soll, da bei einem vorzeitigen Abbruch der Funktion so weniger Speicher reserviert und wieder abgebaut werden muss.

Ich wollte einfach mal aus Interesse fragen, was ihr davon haltet.

Mit freundlichen Grüßen,
WhiteMike

2

19.05.2009, 21:34

Re: [Stilfrage] Variablendeklaration in Methoden

Zitat von »"WhiteMike"«

Er macht es so, dass er Variablen in seinen Methoden direkt als Erstes deklariert. Ich habe allerdings gelesen, dass man deren Deklaration so weit wie möglich nach hinten schieben soll, da bei einem vorzeitigen Abbruch der Funktion so weniger Speicher reserviert und wieder abgebaut werden muss.
Nicht unbedingt deswegen, wobei das noch dazukommt.

Der Grund dafür ist wohl eher, dass Variablen so lokal wie möglich sein sollten. Es hat keinen Sinn, etwas zu deklarieren, bevor man es braucht - im Gegenteil, es birgt sogar Fehler. Wenn man Deklarationen dort schreibt, wo man sie braucht, kann man auch den Überblick besser behalten. Unmittelbar bevor mit einem Objekt gearbeitet wird, sieht man dann dessen Deklaration.

Wenn allerdings die Funktion wirklich sehr kurz ist und es die Übersicht sogar erhöhen könnte, mehrere Variablen direkt nacheinander zu deklarieren, spricht nichts dagegen. Grundsätzlich denke ich aber, möglichst lokal ist oft am besten. Immer alle Deklarationen an den Anfang zu schieben ist mit Sicherheit keine gute Angewohnheit.

3

19.05.2009, 22:18

Hallo

Da halte ich mich immer an Scott Meyers und demanch alle Variablen erst dort deklarieren, wo man sie auch braucht.

chrische

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

19.05.2009, 22:20

Ich deklarier grundsätzlich erst dann wenn notwendig und net früher. Gründe dafür wurden ja schon genannt, gehört allgemein eigentlich zum guten Ton in C++, hauptsächlich eben um größtmögliche Lokalität zu forcieren, spart unter Umständen unnötige Konstruktor/Destruktor Aufrufe, ...

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

5

19.05.2009, 23:13

Wenn ich mich richtig erinnere war das doch in C wo man alle Variablen zu Beginn deklarieren musste, oder? ;)

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

6

19.05.2009, 23:18

Nur bis C99, ab da kann man sie (fast) überall hinschreiben. Ich habe es nicht mehr im Kopf, aber ich meine bei

C-/C++-Quelltext

1
for(int i = 0;...;...)

mal einen Fehler bekommen zu haben. Seit C99 geht aber:

C-/C++-Quelltext

1
2
3
4
int hi;
hi = 0;
int i;
for(i=0;;)

Meine ich zumindest ^^

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

20.05.2009, 21:01

Variablen sollten dann deklariert werden, wenn man sie auch sinnvoll definieren kann. Man kauft ja schliesslich auch kein Auto, wenn man damit noch nicht fahren kann..

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

8

20.05.2009, 21:32

Zitat von »"drakon"«

Variablen sollten dann deklariert werden, wenn man sie auch sinnvoll definieren kann. Man kauft ja schliesslich auch kein Auto, wenn man damit noch nicht fahren kann..


doch, wenn man weiss dass man es in 3 tagen kann (und so manchmal auch bei variablen) ;)

9

20.05.2009, 21:52

Zitat von »"Beneroth"«

doch, wenn man weiss dass man es in 3 tagen kann (und so manchmal auch bei variablen) ;)
Und welchen Sinn oder Vorteil hat dieses Vorgehen bei Variablen?

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

10

20.05.2009, 22:09

Quellcode

1
2
3
4
5
6
7
8
9
Object obj;

if( irgendwas )
{
   obj.initialisiere_so_und_so();
}

// Leer bzw nicht initialisiert wenn irgendwas == false
return obj;


Wär die einzige sinnvolle Idee, die mir einfallen würde.
Wobei man da natürlich auch streiten kann, ob es nicht sinnvoller wäre noch ein else dran zu hängen

EDIT:
Wobei wenn ich mal drüber nachdenk hat das damit gar nichts zu tun. Man kann ja jetzt streiten ob man zwischen der deklaration und dem if noch code schreibt oder nicht -.-*

Werbeanzeige