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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

281

13.06.2013, 06:58

Kannst du da Plugins empfehlen, die man drauf haben sollte?
Kommt drauf an. Für Visual Studio gibt es z.B. Resharper für C# oder für C++ gibt es VisualAssistX. Alle nicht sonderlich teuer (zumindest für Akademiker. Danach wird's heftig), aber sehr hilfreich für Refactorings, Auto-Formatierung, Suchen und teilweise auch für gewisse Fehler-Warnungen.
Für Eclipse definitiv FindBugs. Für Team-Projekte ist, sofern bezahlbar, Sonar eine super geniale Sache zum Einhalten der Code-Conventions und des Styles. Es ist in Eclipse integrierbar, sodass die Ergebnisse des Servers abrufbar sind und direkt im Code als Warnungen angezeigt werden. Sonar lässt sich auch lokal einrichten und notfalls so benutzen. Kann ich nur empfehlen. Allerdings sollte man die default-Regeln dringend um eigene erweitern. Zur Formatierung des Codes sollte man in Eclipse ebenfalls Regeln festlegen, da gibt's ja wundervolle Auto-Formatierung. Checkstyle sollte man auch aktiv haben, muss aber konsistent zu den Sonar-Regeln eingestellt werden.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Tobiking

1x Rätselkönig

  • Private Nachricht senden

282

13.06.2013, 07:35


lustigerweise tritt buffer==null ab und zu ein... obwohl nie ein null packet gesendet wird und der recieve thread dies sogar selbst nochmal überprüft(s.o.)^^

Wenn es sich bei deinem Code um die standard Queue von Java handelt, gibt poll() nur dann null zurück wenn die Queue leer ist. Das hat nichts mit einem null Paket zu tun, dass in der Queue auch gar nicht erlaubt wäre.

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

283

13.06.2013, 11:50

C-/C++-Quelltext

1
2
3
4
while(!netClient.rec.queue.isEmpty()) {
   Packet buffer = netClient.rec.queue.poll();
   // ...
}

Es werden ja nur Pakete gepollt, solange die queue nicht leer ist...

284

25.06.2013, 20:52

C-/C++-Quelltext

1
2
3
4
5
6
void foo(std::string *errorString)
{
    //...//
    errorString = new std::string("U did it wrong");
    //...//
}

Gerade mal so durch älteren Code geblättert.... Wahlweise den new-Operator mit dem &-Operator ersetzen. xD
Safety first :thumbup:

MitgliedXYZ

Alter Hase

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

285

03.07.2013, 17:59

Weiß Visual Studio nicht was es will, oder mach ich hier was falsch?


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

286

03.07.2013, 18:18

Ja, du machst was falsch.
"Padding" ist eine Property, die kannst du nur setzen oder abfragen.
Möglich wäre:

C#-Quelltext

1
2
3
Padding p = mail1.Padding;
p.Left = 50;
mail1.Padding = p;

Oberon

Treue Seele

Beiträge: 181

Wohnort: Österreich

Beruf: Student

  • Private Nachricht senden

287

03.07.2013, 21:21

Luabind scheint ja voll von WTF Code zu sein. Ein Beispiel:

C-/C++-Quelltext

1
2
3
4
return std::make_pair(
        class_ids.get_local(typeid(*p))
      , dynamic_cast<void*>(const_cast<T*>(p))
    );

dynamic_cast<void*>?! Anscheinend ist das wohldefiniert:

Zitat von »C++11 Standard 5.2.7«


The result of the expression dynamic_cast<T>(v) is the result of converting the expression v to type T.
[...]
If T is “pointer to cv void,” then the result is a pointer to the most derived object pointed to by v.

Hat das einer von euch jemals benutzt?

"Interessant" ist auch der Callstack dazu (hier nur der Luabind-Teil):

Quellcode

1
2
3
4
5
6
7
8
luabind::detail::get_dynamic_class_aux<X>(lua_State * L, const X * p, boost::mpl::bool_<1> __formal) Line 18
luabind::detail::get_dynamic_class<X>(lua_State * L, X * p) Line 42
luabind::detail::make_instance<X *>(lua_State * L, X * p) Line 74   
luabind::detail::pointer_converter::apply<X>(lua_State * L, X * ptr) Line 234
luabind::detail::invoke_normal<X * (__cdecl*)(U *),boost::mpl::vector2<X *,U *>,luabind::detail::null_type>(lua_State * L, const luabind::detail::function_object & self, luabind::detail::invoke_context & ctx, X * (U *) * const & f, boost::mpl::vector2<X *,U *> __formal, const luabind::detail::null_type & __formal, boost::mpl::long_<1> __formal, boost::mpl::bool_<0> __formal) Line 34
luabind::detail::invoke0<X * (__cdecl*)(U *),boost::mpl::vector2<X *,U *>,luabind::detail::null_type,boost::is_void<X *> >(lua_State * L, const luabind::detail::function_object & self, luabind::detail::invoke_context & ctx, X * (U *) * const & f, boost::mpl::vector2<X *,U *> __formal, const luabind::detail::null_type & policies, boost::is_void<X *> __formal, boost::mpl::bool_<0> __formal) Line 89
luabind::detail::invoke<X * (__cdecl*)(U *),boost::mpl::vector2<X *,U *>,luabind::detail::null_type>(lua_State * L, const luabind::detail::function_object & self, luabind::detail::invoke_context & ctx, X * (U *) * const & f, boost::mpl::vector2<X *,U *> __formal, const luabind::detail::null_type & policies) Line 101
luabind::detail::function_object_impl<X * (__cdecl*)(U *),boost::mpl::vector2<X *,U *>,luabind::detail::null_type>::entry_point(lua_State * L) Line 64

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

288

04.07.2013, 15:14

Nee, wusste ich nicht!
Sehr interessant.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

289

04.07.2013, 16:29

Benutzt nicht, bin aber im Rahmen meiner Diplomarbeit mal darauf gestoßen. Das war im Zusammenhang mit dem Speicherlayout von Objekten bei virtueller Vererbung: http://www.phpcompiler.org/articles/virtualinheritance.html letzter Absatz.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

290

16.07.2013, 20:57

Endlich hab ich auch mal was... Gott sei dank nicht von mir, aber das würde ich mich eh nicht trauen.
So, wer von euch kennt Gambio?

Quellcode

1
2
3
4
5
6
7
8
9
10
switch ($_GET['action']) {
    case 'save':
      while (list($key, $value) = each($_POST['configuration'])) {
        if(preg_match('/(MODULE_)\w*(_ALLOWED|_COUNTRIES_\d+)/i', $key)){
            $value = preg_replace('/[^A-Za-z,]/', '', $value);   
            $value = strtoupper($value);
            $value = trim($value, ',');
        }
        xtc_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '" . $value . "' where configuration_key = '" . $key . "'");
      }


(PHP)

Ich hab momentan ein Problem damit diesen Shop einzurichten, da der Server https als Protokoll nutzt, aber darum geht es hier nicht.
Diese Zeile:

Quellcode

1
while (list($key, $value) = each($_POST['configuration'])) {


Ist der absolute Hammer. Und das beste an der Sache: die wollen sogar Geld dafür :D
Wer sich mal 10 Minuten (reicht völlig) den Quellcode ansieht, muss zu dem Schluss kommen, dass hier nur absolute Amateure am Werk waren. Das kann doch einfach nicht wahr sein, wie kommt man auf so einen Unsinn? Und das Schimmste ist, der ganze Code weißt weitere solcher Hässlichkeiten auf, ist dazu noch uneinheitlich und unsauber formatiert.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »DeKugelschieber« (16.07.2013, 22:18)


Werbeanzeige