Attualmente sono un ingegnere junior e appassionato di apprendimento delle migliori pratiche e di espansione della mia esperienza. La mia domanda riguarda qualsiasi linguaggio di programmazione statico come Java, C #, C ++ ecc.
Quando scrivo codice, mi piace renderlo facile da leggere. Secondo me, leggere il codice dovrebbe essere come leggere un libro. Dovrebbe essere fluente ed elegante. Quindi, anche se non ho bisogno di usarli, mi piace anteporre this
, super
- base
parole chiave ogni volta che posso. Idem per il nome della classe corrente quando voglio usare costanti o variabili / metodi statici.
Di conseguenza, un altro sviluppatore può rapidamente avere una possibilità remota. Conosce questo metodo o var è nella classe corrente o nella classe madre senza bisogno di passare alla dichiarazione. Potresti dirmi che è davvero facile farlo con i recenti IDE. Tuttavia, conosco un gruppo di ragazzi che stanno ancora lavorando con Vim, Emacs o altri editor senza queste fantastiche funzionalità.
Quando lo spieghiamo, mi piace paragonare le mie pratiche a un libro di recitazione. Tutti abbiamo letto almeno uno di questi, come Macbeth di Shakespeare. Chi non si è mai sentito frustrato di tornare all'inizio del libro per sapere chi è quel personaggio e quale parte ha nella trama? L'hai fatto così tante volte, vero?
La mia domanda può essere associata a pratiche di programmazione letterale. Tuttavia, ho pensato che le raccomandazioni di Donald Knuth riguardassero più commenti e aggiunte di macro al tuo codice.
Quindi mi piacerebbe conoscere le tue opinioni e feedback su queste pratiche. Sto facendo troppo? Dovrei tenerlo più semplice? Sto violando le regole OOP?
Ecco un esempio di codice:
class Bar {
protected int _motherVar;
public aBarMethod() { }
}
class Foo extends Bar {
private static List<String> _strings;
private int _myPrivateVar;
public void aMethod() {
super.aBarMethod();
this._myPrivateVar++;
super._motherVar -= 2;
}
public static String anotherMethod() {
String outcome = "";
for (String s : Foo._strings) {
outcome += s;
}
return outcome;
}
}