Bonjour, c'est Shrimpman de la comptabilité Saas Japon.
Lorsque vous travaillez dans le domaine des applications Java, le langage peut être assez mort Je pense qu'il n'est pas rare de maintenir des applications Java héritées. Ensuite, le code mystérieux des débutants Java à l'époque, difficile à comprendre pour les programmeurs modernes, Vous rencontrerez souvent du code dangereux qui crée des peluches et des bogues.
Cette fois, je voudrais annoncer ceux qui ont laissé une impression particulièrement forte dans le format du classement. C'est vraiment arrivé (bien que la plupart des cas soient en dehors de notre entreprise).
Une variable statique publique est comme une variable globale dans la VM, n'est-ce pas? Souhaitez-vous obtenir la connexion à partir de différents endroits? C'est difficile car il a été déclaré comme connexion statique publique. Bien sûr, lorsque vous obtenez une connexion, elle est déjà fermée.
Des enregistreurs avec des déclarations statiques privées (sans modificateurs finaux) ont été utilisés ici et là. Ce n'est pas un problème en soi, mais si cette classe est la classe cible de Serialize, Bien sûr, Logger n'a pas pu être sérialisé, donc une exception a été levée. C'est irrésistible car il a été inondé ici et là.
private static Logger log = Logger.getLogger(this.getClass());
La méthode finalize de la classe Object ne fait plus référence à cet objet Il sera exécuté lorsqu'il sera collecté en tant que cible pour destruction par le garbage collector. J'étais en difficulté parce que j'écrivais le processus en remplaçant la méthode finalize. On supposait que le processus serait exécuté ou non, et nous ne saurions pas quand il serait appelé.
SomeValue value = null;
if (someClass != null
&& someClass.getValueA() != null
&& someClass.getValueA().getValueB() != null
&& someClass.getValueA().getValueB().getValueC() != null
&& someClass.getValueA().getValueB().getValueC().getValueD() != null
&& someClass.getValueA().getValueB().getValueC().getValueD().getValueE() != null
&& someClass.getValueA().getValueB().getValueC().getValueD().getValueE().getValueF() != null
&& someClass.getValueA().getValueB().getValueC().getValueD().getValueE().getValueF().getValueG() != null) {
value = someClass.getValueA().getValueB().getValueC().getValueD().getValueE().getValueF().getValueG();
}
Sensationnel····.
C'était courant dans le passé, une telle classe. C'est presque parti maintenant.
public class SomeClass {
private Result result;
public void init() {
//Quelque chose comme lire le maître
}
public void calculate() {
//Traitement des calculs
result = new Result(xxx);
}
public Resut getResult() {
return result;
}
}
Eh bien, je ne vois pas cela, mais cela arrive parfois.
public int extractSomethingUtilityMethod throws IOException, IllegalStateException, NumberFormatException, SomeException.... {
//Quelque chose de traitement
}
De nombreux types d'exceptions ont été déclarés se produire ... C'est mieux que d'être écrasé, mais je ne veux pas appeler une telle méthode ...
SomeElement element = null;
if (valueA != null) {
someElement = new Element(valueA)
someElement.setParent(parentElement);
}
if (valueB != null) {
someElement = new Element(valueB)
someElement.setParent(parentElement);
}
if (valueC != null) {
someElement = new Element(valueC)
someElement.setParent(parentElement);
}
C'est inconfortable ... Cela seul ne semble pas avoir d'effets indésirables, C'est un peu effrayant pour la portée mystérieuse.
Code qui devient parfois fou
try {
//Traitement divers
} catch (Exception e) {
}
J'attrape une exception, mais ... ?? Ne crachez pas de bûches! ?? Je veux dire ...
Maintenant que Java 8 est le centre, il y a peu de scènes d'apparition pour la boucle, mais Il était utilisé partout comme un processus de bouclage efficace qui ne resterait pas coincé dans les programmes hérités. Cependant, comme la boucle for est utilisée de manière trop pratique, la boucle for est imbriquée dans double et triple, et il est possible de quitter la boucle. Un sage qui utilise des étiquettes est apparu.
loopA: for (int i = 0; i < arrayA.length; ++i) {
for (int j = 0; j < arrayB.length; ++i) {
//Quelque chose de traitement
if (xxx) {
break loopA;
}
}
}
Ce n'est que le début, mais si vous multiplexez cela, vous ne savez jamais quand et à quelle distance vous êtes sorti de la boucle.
Je voudrais dire comme le titre l'indique, mais c'est un peu difficile à imaginer, alors j'écrirai un exemple simple ci-dessous.
if (bigDecimalValue.compareTo(BigDecimal.valueOf(100000L) < 0)) {
//En traitement
} else {
if (bidDecimalValue.compareTo(BigDecimal.valueOf(200000L) < 0) {
//En traitement
} else {
if (bigDecimalValue.compareTo(BigDecimal.valueOf(300000L) < 0 ) {
//En traitement
} else {
Cela continue sans fin et disparaît à l'extrême droite de l'écran ...
}
}
}
Ceux qui voient cela pour la première fois ne savent pas ce que fait ce processus, mais le branchement conditionnel Je pense que je suis fou si j'ai trouvé un emploi dans une entreprise qui devait coder sans autre chose. Au fait, cette déclaration que j'ai rencontrée était de plus en plus imbriquée et disparaissait à l'extrême droite de l'écran.
En outre, ASaaS a augmenté le nombre d'ingénieurs techniques en chef ces dernières années et se concentre également sur la formation des jeunes. Nous avons un système en place pour fabriquer des produits de haute qualité. Créer et maintenir un produit que tous les clients qui utilisent ASaaS peuvent utiliser en toute tranquillité pendant longtemps Soyez assuré qu'il est en place.
Recommended Posts