Coding Was haltet ihr von diesem .js Code? (1 Betrachter)

  • Ersteller des Themas
  • #1

F0CUS

Registriert
Black-Market: 0 / 0 / 0
4 März 2019
21
3 %
Hey Jungs,

bin "fortgeschrittener Anfänger" in Sachen Coding und habe jetzt seit einigen Tagen ein bisschen neues ausprobiert. Implementiert habe ich das ganze in einem JS Discord Bot.

Wollt's einfach mal teilen in der Hoffnung, dass ein etwas erfahrenerer Programmierer mal Lust hat und drüber schauen möchte und etwas Feedback + ggf. Verbesserungsvorschläge zu meinem Code geben möchte. Code zu stealen lohnt sich nicht, ist nichts besonderes zu finden.

MfG
F0CUS


 

filokdp

Szene-Pirat
Black-Market: 0 / 0 / 0
6 Oktober 2019
651
37 %
Alles ist sehr schlecht gehalten. Ein Prefix sollte es für jeden Befehl geben und außerdem solltest du es vielleicht in Form eines Commandsystems machen. Code ist nicht clean und sieht nicht wirklich gut gelöst aus.

Schau dir mal eine Tutorialreihe an und lerne ein wenig davon.
 
  • Ersteller des Themas
  • #3

F0CUS

Registriert
Black-Market: 0 / 0 / 0
4 März 2019
21
3 %
Alles ist sehr schlecht gehalten. Ein Prefix sollte es für jeden Befehl geben und außerdem solltest du es vielleicht in Form eines Commandsystems machen. Code ist nicht clean und sieht nicht wirklich gut gelöst aus.

Schau dir mal eine Tutorialreihe an und lerne ein wenig davon.
Etwas übertreiben kann mans aber auch. Von komplett nicht clean kannst du hier nicht reden, z.B. habe ich nicht alles in die "bot.on(message) etc..." geklatscht sondern alles in einzelne methods verpackt. Das mit dem Prefix weiß ich, allerdings hab ich das FÜR JETZT für einen einzigen vorhandenen Command für unnötig gehalten. Es ist definitiv nicht alles schlecht gehalten, das sagt auch die Meinung eines anderen Kumpels, der schon etwas länger dabei ist.

Bitte das nächste mal mehr Details, ich kann deiner Antwort nämlich nicht entnehmen, was genau "nicht clean und nicht gut gelöst" aussieht.
 

filokdp

Szene-Pirat
Black-Market: 0 / 0 / 0
6 Oktober 2019
651
37 %
Du hast nach meiner Meinung gefragt, also habe ich meine abgegeben.

Das mit dem Prefix weiß ich, allerdings hab ich das FÜR JETZT für einen einzigen vorhandenen Command für unnötig gehalten.
Falscher gedanke, hättest von anfang an auch eine Resourcen effiziente Methode finden können. Durch einen Command Handler wäre das ganze besser gewesen.

Es ist definitiv nicht alles schlecht gehalten, das sagt auch die Meinung eines anderen Kumpels, der schon etwas länger dabei ist.
Gut für deinen Kumpel dann, aber wie gesagt: hast nach unserer Meinung gefragt.
Bitte das nächste mal mehr Details, ich kann deiner Antwort nämlich nicht entnehmen, was genau "nicht clean und nicht gut gelöst" aussieht.
War detailreich genug, allein das du Arrays im Code hast, macht es den Code recht unschön.
 
  • Ersteller des Themas
  • #5

F0CUS

Registriert
Black-Market: 0 / 0 / 0
4 März 2019
21
3 %
War detailreich genug, allein das du Arrays im Code hast, macht es den Code recht unschön.
Das ist doch mal ein schöneres Beispiel, danke :) Geht doch. Auch wenn der ganze Code nicht durch einen Array unschön gemacht wird, aber naja. Gibt halt "Meinungen" da draußen :D

Und ja gut für ihn, trotzdem darf ich sagen, was er gesagt hat, oder ist das gegen die Forumregeln? nein.

Und naja, der Code funktioniert und ist lesbar, und da der Bot lediglich 2 kleine Sachen machen sollte von Anfang an halte ich das für okay, vorallem da mir bewusst ist, wie es besser gehen würde. War dafür nur zu faul.

Und da wie gesagt, der Code funktioniert und lesbar ist, ist nicht alles schlecht, so wie du behauptet hast.
 
  • Ersteller des Themas
  • #7

F0CUS

Registriert
Black-Market: 0 / 0 / 0
4 März 2019
21
3 %
Der Code ist einigermaßen okay, mich stört lediglich der Mix aus ES5 und ES6+ ein paar der durchgeführten Vergleichsoperationen. Das sollte sinnvollerweise vereinheitlicht und verbessert werden.

https://app.blackhole.run/#u2QkxJnskd1MfMUjU41ZSPf4SV6ucyYyc9jDX6zmbdKk
Interessant jemanden zu sehen, der Methods mit auf camelCase-Art benennt. No hate.

Kannst du ausführen was du mit Mix aus ES5 und ES6 meinst? Weiß nicht was wohin gehört, dachte das ist alles Basic JS, dachte nicht, dass sich die Versionen dort unterscheiden. Das mit den Vergleichsoperatoren stimmt, mein Fehler. Komme von C++ und kenne === eigentlich nicht in der Praxis. Ansonsten scheint einiges noch Personal Preference zu sein, was du verändert hast.

Aber danke für dein Feedback und für die Verbesserung!
 

TrioxX

EliTE-Mitglied
Black-Market: 0 / 0 / 0
5 August 2019
30
10 %
Interessant jemanden zu sehen, der Methods mit auf camelCase-Art benennt. No hate.
Für Methoden durchaus üblich. Sowohl in Vanilla-JS (z.B. toLowerCase, getTime, ...), als auch in der von dir verwendeten Discord-Lib (z.B. setActivity). Es gibt hier ja kein richtig, oder falsch, aber wenn man schon gewisse Vorgaben hat, schadet es ja nicht, sich daran zu orientieren bzw. zu halten.

Ansonsten scheint einiges noch Personal Preference zu sein, was du verändert hast.
Minimal. Nur der Übersicht halber und weil mich die inkonsistente Verwendung von " und ' ohne jeglichen Grund stört :D

Kannst du ausführen was du mit Mix aus ES5 und ES6 meinst? Weiß nicht was wohin gehört, dachte das ist alles Basic JS, dachte nicht, dass sich die Versionen dort unterscheiden.
"Basic JS" ist es auch weiterhin und noch kann man den ganzen Kram problemlos miteinander verwursten. Aber schön ist was anderes.

An einer Stelle verwendest du z.B. Arrow-Funktionen¹ (vermutlich aus irgendwelchen Beispielen kopiert) und an anderen Stellen nicht². Arrow-Funktionen gibt es seit ES6 und wenn sie an einer Stelle benutzt werden, sollte man auch hier ein wenig darauf achten, die Verwendung zu vereinheitlichen:

¹ =
JavaScript:
bot.once('ready', () => {
² =
JavaScript:
function StartTimer(message)
{
Selbiges gilt auch für die konsistente Verwendung von let und const, an Stelle von var, zumal eine Variable auch nur einmal definiert werden darf, was du aber beispielsweise bei targetChannel nicht gemacht hast.

Und zu den Arrow-Codes noch ein anderes, schönes Beispiel:

JavaScript:
function timesTwo(params) {
  return params * 2;
}
vs.

JavaScript:
const timesTwo = params => params * 2;
Ich habe den Link oben übrigens ausgetauscht, weil ich noch eine Kleinigkeit vergessen hatte.
 
Zuletzt bearbeitet:
  • Ersteller des Themas
  • #9

F0CUS

Registriert
Black-Market: 0 / 0 / 0
4 März 2019
21
3 %
Für Methoden durchaus üblich. Sowohl in Vanilla-JS (z.B. toLowerCase, getTime, ...), als auch in der von dir verwendeten Discord-Lib (z.B. setActivity). Es gibt hier ja kein richtig, oder falsch, aber wenn man schon gewisse Vorgaben hat, schadet es ja nicht, sich daran zu orientieren bzw. zu halten.



Minimal. Nur der Übersicht halber und weil mich die inkonsistente Verwendung von " und ' ohne jeglichen Grund stört :D



"Basic JS" ist es auch weiterhin und noch kann man den ganzen Kram problemlos miteinander verwursten. Aber schön ist was anderes.

An einer Stelle verwendest du z.B. Arrow-Funktionen¹ (vermutlich aus irgendwelchen Beispielen kopiert) und an anderen Stellen nicht². Arrow-Funktionen gibt es seit ES6 und wenn sie an einer Stelle benutzt werden, sollte man auch hier ein wenig darauf achten, die Verwendung zu vereinheitlichen:

¹ =
JavaScript:
bot.once('ready', () => {
² =
JavaScript:
function StartTimer(message)
{
Selbiges gilt auch für die konsistente Verwendung von let und const, an Stelle von var, zumal eine Variable auch nur einmal definiert werden darf, was du aber beispielsweise bei targetChannel nicht gemacht hast.

Und zu den Arrow-Codes noch ein anderes, schönes Beispiel:

JavaScript:
function timesTwo(params) {
  return params * 2;
}
vs.

JavaScript:
const timesTwo = params => params * 2;
Ich habe den Link oben übrigens ausgetauscht, weil ich noch eine Kleinigkeit vergessen hatte.
Danke für die Tipps, werde ich mir merken!

Ja, das mit den "" und '' war mir auch bewusst, ich habe halt größtenteils einfach unsauber gearbeitet, da ich schnell etwas wollte, mich nicht entscheiden konnte und dann einfach immer das erste genommen habe, was mir eingefallen ist. Durch C++ bin ich auch eigentlich an "" gewohnt, sowie Methods "SoZuBenennen", weil die Quellen, wo ich C++ lerne, das so gemacht haben, ich folglich also so von Anfang an gearbeitet habe und es für Methods auch irgendwie schöner finde.

Zu den Arrow Funktionen: Hätte ich das bei jeder Method, also bei meinen eigenen auch so machen sollen? Bei denen mit bot.on... ist das ja z.B. nötig. Ist auch wieder so ein JavaScript-Ding, und die Sprache hatte ich an sich nie wirklich gelernt, sondern einfach mein C++, C#-Wissen genommen und mit ein wenig Googlelei verküpft :D

Ansonsten nochmal danke!
 

Dieses Thema betrachten gerade (Benutzer: 0, Gäste: 1)