A lavoro sto cominciando a lavorare con C#, ma sono in costante ansia perché certe cose proprio non riesco a farle (non ho mai programmato in C# prima d'ora). Qualche veterano che abbia qualche tip da impartire?
Scrivi tanti commenti anche per le cose più stupide;
Mantieni un ordine visivo per le parentesi;
Crea (a parte) e richiama le funzioni ricorrenti;
Se il programma lo devi mostrare a qualcun altro triplica il numero di commenti;
Cerca sempre di usare funzioni che occupino meno tempo ad essere eseguite (ci sono mille modi per ottenere uno stesso risultato, ma bisognerebbe cercare di non far perdere troppo tempo al processore).
Cerca di creare codice che abbia il meno possibile bisogno di commenti. E non fare commenti inutili, che se la funzione si chiama getInt() è abbastanza chiaro.
Il codice deve essere "autocommentante". Dove non è possibile, ovviamente, commenta. Non è il caso di C#, ma quando la gente non commenta bit-tricks in C mi sale un nervoso che spaccherei il monitor.
Generalmente mi trovo davanti a due tipi di codice: quelli senza un commento nemmeno a pagarlo oro, e quelli così (esempio reale con nomi generici, visto ieri):
//check if my_vector is a valid vector of Struct
bool checkStructVectorValidity(vector<Struct> my_vector) {
//iterate through every element of my_vector
for(Struct &s: my_vector) {
//check if member a is negative or member b is positive, in these cases, fail and return false
if(s.a() < 0 || s.b() > 0) {
return false;
}
}
//if everything is ok, return true
return true;
}
Devo ancora capire il perché della negazione logica assieme a quella bitwise (togliendole entrambe è uguale), e perché una bitmask viene associata a qualcosa che è chiamato "flag", quando poi è utilizzata come una bitmask.
Io questo pezzo di codice non lo tocco neanche se mi minacciano di tagliarmi le palle.
Comunque per il tuo esempio, spesso chi sta scrivendo il codice non si rende conto che esiste un modo più semplice e finisce per complicare inutilmente. Dopo un po' di brain-fuck(le operazioni bitwise non sono affatto intuitive se non sai che significano: "estrai questo", "aggiungi questo" ecc), ho capito anche io che la negazione logica e bitwise si cancellano a vicenda, ma magari se non sei proprio un espertone e ti mettono li a fare roba bitwise non ci arrivi subito.
Il fatto di chiamare una bitmask flag però :/
3
u/Rejuvenation93 Sep 04 '18
A lavoro sto cominciando a lavorare con C#, ma sono in costante ansia perché certe cose proprio non riesco a farle (non ho mai programmato in C# prima d'ora). Qualche veterano che abbia qualche tip da impartire?