Choses à noter pour les nouveaux arrivants d'écrire du code lisible pendant le développement Java

introduction

En tant qu'étudiant universitaire et diplômé, j'ai été impliqué dans Java pour la première fois après avoir rejoint l'entreprise. Après une formation pour les nouveaux arrivants, je n'ai qu'un an et demi d'expérience en développement Java, j'aimerais donc partager les points à prendre en compte lors de l'écriture du code source dans les projets auxquels j'ai participé, et les points soulignés dans la revue.

Rendre les noms de classe, les noms de méthodes et les noms de variables faciles à comprendre

① Suivez les règles de dénomination du code source existant

Les projets dans lesquels je suis impliqué depuis un an et demi sont principalement la création de nouvelles fonctions ou la création par lots de systèmes existants. Avant de créer une nouvelle classe, il est important de lire d'abord le code source existant pour comprendre les règles de dénomination. Pour l'instant, lisez le code existant avant de commencer!

Exemple: OldProductDeleteBatch.java ⇒ Existant CampaignFileStopBatch.java``` ⇒ Nouveau

C'est une règle de dénomination nez + verbe + lot.

② Rendre le nom de la variable facile à comprendre même s'il est long

errorEtmessageEtidLes noms des variables sont courts, mais si vous y réfléchissez bien, vous n'obtiendrez aucune information. Quelle erreur? Quel genre de message? Où id? Personne ne sait, sauf la personne qui l'a écrit.

Plus précisement S'il y a une erreur d'affichage de format, formatError, Pour les messages d'avertissement, `` `` warningMessage, Pour l'ID de fichier, fileId``` Écrivons.

③ Essayez d'écrire correctement l'anglais

Bien sûr, il y a des gens qui ne sont pas bons en anglais, mais je pense qu'un anglais correct est nécessaire pour transmettre correctement l'intention à ceux qui lisent le code source.

Par exemple: ① variable booléenne pour déterminer si le fichier existe boolean fileexist ⇒boolean fileexists

② Variable pour stocker l'ID du fichier de la campagne string campignfileid ⇒ string campaignfileid

Écrivez des commentaires de manière positive

Pour les ingénieurs expérimentés, il vaut peut-être mieux ne pas écrire de commentaires fréquemment, mais je pense qu'il vaut mieux que les débutants écrivent de manière positive.

Au début, le contenu du traitement était répertorié dans les commentaires comme indiqué ci-dessous, et le code a été écrit après avoir saisi l'image dans son ensemble. Je pense que nous pouvons déterminer ce qu'il faut faire de cette manière.

comment.java


/*--------------------------------------------------------------------------------------------------------------
Examinez chaque ligne du fichier TSV téléchargé
	0.id		1.Nom 2.Numéro d'étudiant
						
* Le numéro d'inscription étudiant indiqué dans le fichier TSV est le numéro DB int._number

Si une erreur se produit, appelez la méthode suivante pour placer le message d'erreur ligne par ligne dans la feuille
・ AddErrorRow():Si toutes les données sont nulles
・ AddStudentErrorRow(): Si les informations d'inscription à l'école sont erronées
--------------------------------------------------------------------------------------------------------------*/
for(){
    //Écrire un traitement spécifique
}

Et encore une chose, en tant qu'ingénieur, j'oublie souvent ce que j'ai écrit au fil du temps. Dans ce cas, si vous avez un commentaire, vous pouvez comprendre immédiatement le contenu du code source.

Ecrire ensemble des processus similaires

Lors de la création de certains processus par lots, j'ai remarqué que j'avais écrit un processus similaire.

Par exemple, le processus de création de la feuille Excel suivante:

ExcelFormat.java


    public static Workbook newWorkbook(){
		Workbook newWorkbook = new SXSSFWorkbook();
		
		CellStyle styleHeaderLabel = null;
		CellStyle styleHeaderValue = null;
		CellStyle styleHeaderValue = null;
		
		DataFormat format = newWorkbook.createDataFormat();
		
		//paramètres de police
		Font font = newWorkbook.createFont();
		font.setFontName("MS Gothic");
		font.setFontHeightInPoints((short)9);
		
		//Formatage pour l'affichage de la chaîne d'en-tête
		styleHeaderLabel = newWorkbook.createCellStyle();
		styleHeaderLabel.setBorderBottom(CellStyle.BORDER_THIN);
		styleHeaderLabel.setBorderTop(CellStyle.BORDER_THIN);
		styleHeaderLabel.setBorderLeft(CellStyle.BORDER_THIN);
		styleHeaderLabel.setBorderRight(CellStyle.BORDER_THIN);
		styleHeaderLabel.setFillForegroundColor(HSSFColor.LIGHT_CORNFLOWER_BLUE.index);
		styleHeaderLabel.setFillPattern(CellStyle.SOLID_FOREGROUND);
		styleHeaderLabel.setVerticalAlignment(CellStyle.VERTICAL_TOP);
		styleHeaderLabel.setWrapText(true);
		styleHeaderLabel.setFont(font);
		
		addHeader(newWorkbook);
		
		return newWorkbook;
	}
	
	public static void addHeader(Workbook workbook){
		//Initialisez la feuille et définissez le nom de la feuille
		Sheet mainSheet = workbook.createSheet();
		mainSheet.createFreezePane(0, 1);
		workbook.setSheetName(SHEET_NO, SHEET_NAME);

		int colNumber = 1;
		int rowNumber = 1;
		Row row = mainSheet.createRow(rowNumber);
		Cell cell = null;
		CellStyle styleHeaderLabel = workbook.getCellStyleAt((short)(workbook.getNumCellStyles()-3));

		//Insérer un en-tête
		for(String headerName : HEADER_LIST){
			cell = row.createCell(colNumber++);
			cell.setCellStyle(styleHeaderLabel);
			cell.setCellType(Cell.CELL_TYPE_STRING);
			cell.setCellValue(headerName);
		}

		int maxColNumber = 0;

		//Ajuster la taille de la colonne
		for(int i = 1; i < colNumber; i++) {
			mainSheet.setColumnWidth(i, 5000);
			maxColNumber = i;
		}

		//Définir la ligne d'en-tête sur filtre automatique
		mainSheet.setAutoFilter(new CellRangeAddress(1,1,1,maxColNumber));
	}

En fait, il existe un certain nombre de processus similaires dans le processus par lots, et si vous les regroupez dans une classe et partagez le processus, le code source sera plus court et la lisibilité sera améliorée. Lorsqu'il y a deux ou plusieurs processus similaires dans votre source, pensez à «si ce processus peut être partagé» ou «s'il peut être résumé quelque part».

Écrivons avec une grande indépendance

Jetez un œil au code source ci-dessous.

file.java


for(int i=0;i<file.arrtibuteSize();i++){
    if("00000000".equals(file.getAttribute(i).getId()) && !file.getAttribute(i).getValue().isEmpty()){
         ids.add(file.getAttribute(i).getValue());
         
         break;
    }
}

La manière d'écrire ici ! File.getAttribute (i) .getValue (). IsEmpty () '' est que la valeur de file.getAttribute (i) .getValue () '' n'est pas toujours nulle. Des hypothèses sont requises. (Parce que NullPointerException``` se produira si null est défini) Cette fois, l'objet référencé a été défini de sorte que la valeur ici ne soit pas nulle, mais vous devez également prendre en compte la situation lorsqu'elle n'est pas définie.

Il est plus sûr d'écrire de manière à ce qu'il ne tombe pas même si quelque chose est défini lors du référencement dans un objet créé par un tel traitement indépendant.

Fixé:

file_2.java


for(int i=0;i<file.attributeSize();i++){
    var fileAttr = file.getAttribute(i);
    if(!"00000000".equals(fileAttr.getId())){
        continue;
    }

    var value = fileAttr.getValue();
    if(value != null && !value.isEmpty()){
          ids.add(value);

          break;
    }
}

Écrire cela éviterait `` NullPointerException ''.

Unifier le style d'écriture

C'est une histoire très détaillée, mais je pense qu'il est préférable de définir des règles personnelles lorsque vous commencez à écrire le code source. Exemple:

rule.java


for(int i =0;i<ids.length;i++) {
 //なにかの処理を書く
}

Le code source ci-dessus peut prêter à confusion, mais écrivez les arguments après for()Je n'ai pas mis d'espace après pour, mais j'ai mis un espace après les parenthèses. Afficher les arguments après tel pour et si()Unifions s'il faut ou non laisser un espace demi-largeur.

rule2.java


for(int i=0;i<ids.length;i++){
 //なにかの処理を書く
}

#Résumé Qu'as-tu pensé.

Au début, je faisais de mon mieux juste pour déplacer le code source, mais je pense progressivement à la lisibilité et aux règles de création. Pour moi, «étudier la programmation n'est pas le but» est la chose la plus importante à noter. Je pense que l'important est de faire des recherches et de programmer selon les motifs de «je veux faire quelque chose» et «quel genre de fonction je veux réaliser».

Recommended Posts

Choses à noter pour les nouveaux arrivants d'écrire du code lisible pendant le développement Java
Points à surveiller dans le développement futur de Java
Bases du développement Java ~ Comment écrire des programmes * Exercice 1 ~
Points à connaître avec Java Equals
java: Comment écrire une liste de types génériques [Note]
[Java] Points à noter sur l'inférence de type étendue dans Java 10
Comment créer un environnement de développement Java avec VS Code
Éléments à prendre en compte lors de l'écriture de code en Java
Paramètres de renforcement d'installation et de complétion de code d'Eclipse (développement Mac pour Java)
Nouvelles fonctionnalités de Java 14 pouvant être utilisées pour écrire du code
Comment écrire du bon code
Comment rédiger un commentaire java
Écrire du code de type Java8 en Java8
[R Spec on Rails] Comment écrire du code de test pour les débutants par les débutants
Bases du développement Java ~ Comment écrire des programmes (variables et types) ~
[Note] Java: est-il nécessaire de remplacer les égaux pour le jugement d'égalité?
Étudier Java # 6 (Comment écrire des blocs)
[Java] Points à noter avec Arrays.asList ()
Création d'un environnement de développement Java (pour Mac)
Comment écrire une déclaration de variable Java
Ma note de profit: Présentation de Java à Ubuntu
Comment rédiger un code facile à comprendre [Résumé 3]
Environnement de développement Java (Mac, VS Code)
Points à noter dans les expressions conditionnelles
[Android] Convertir le code Java Android en Kotlin