Presentation is loading. Please wait.

Presentation is loading. Please wait.

ソフトウェア制作論 平成30年9月26日.

Similar presentations


Presentation on theme: "ソフトウェア制作論 平成30年9月26日."— Presentation transcript:

1 ソフトウェア制作論 平成30年9月26日

2 分かりやすいプログラムとは 変数名の付け方 コメントの付け方 字下げの徹底

3 変数名の付け方 例題1) private void jButton1ActionPerformed(ActionEvent evt) {
変数名の付け方 例題1) private void jButton1ActionPerformed(ActionEvent evt) {   int a=Integer.parseInt(jTextField1.getText());     int b=Integer.parseInt(jTextField2.getText());   int c=a+b;   int d=a-b;   int e=a*b;   double f=a/b;   jTextFieldWa.setText(String.valueOf(c));   jTextFieldSa.setText(String.valueOf(d));   jTextFieldSeki.setText(String.valueOf(e));   jTextFieldSho.setText(String.valueOf(f)); } 問題)変数の意味が分かるように、各変数名を修正して下さい。

4 例題1) 解答例 private void jButton1ActionPerformed(ActionEvent evt) {
例題1) 解答例 private void jButton1ActionPerformed(ActionEvent evt) {   int a=Integer.parseInt(jTextField1.getText());     int b=Integer.parseInt(jTextField2.getText());   int wa=a+b;   int sa=a-b;   int seki=a*b;   double sho=a/b;   jTextFieldWa.setText(String.valueOf(wa));   jTextFieldSa.setText(String.valueOf(sa));   jTextFieldSeki.setText(String.valueOf(seki));   jTextFieldSho.setText(String.valueOf(sho)); } さらに、a,bも修正すると・・・

5 例題1) 解答例(改良) private void jButton1ActionPerformed(ActionEvent evt) {
例題1) 解答例(改良) private void jButton1ActionPerformed(ActionEvent evt) {   int data1=Integer.parseInt(jTextField1.getText());     int data2=Integer.parseInt(jTextField2.getText());   int wa=data1+data2;   int sa=data1-data2;   int seki=data1*data2;   double sho=data1/data2;   jTextFieldWa.setText(String.valueOf(wa));   jTextFieldSa.setText(String.valueOf(sa));   jTextFieldSeki.setText(String.valueOf(seki));   jTextFieldSho.setText(String.valueOf(sho)); } 初見でプログラムの意味が分かる!

6 【基礎課題1-1 】 アメリカドルの円に対する交換額を計算するプログラムを次のように 作成しました。交換レートは、9/30現在で1ドル=112.6円でした。 プログラムの内容が分かるように変数名を修正して下さい。 private void jButtonExchangeActionPerformed(ActionEvent evt) { int a=Integer.parseInt(jTextFieldDollar.getText()); double b=112.6; c=(int) (b*a); jTextFieldYen.setText(String.valueOf(c)); }

7 【基礎課題1-1 】 解答例 private void jButtonExchangeActionPerformed(ActionEvent evt) { int dollar=Integer.parseInt(jTextFieldDollar.getText()); double rate=112.6; yen=(int) (rate*dollar); jTextFieldYen.setText(String.valueOf(yen)); }

8 変数命名の(最低限の)ルール プログラムにおける意味(役割)が分かるように命名する。→他人が 分かるように命名することがポイント
慣例的には、英語を基本にして意味が分かる程度に簡略する、とい う方針で命名が行われて来た。  例) 最大値:max(maximum)、 最小値:min(minimum)、等々。 意味が紛らわしくなる場合は、省略せず区別を明確化する。  例) ユーザ名、ユーザアカウントという変数を用いる場合   良い例)userName、userAccount  悪い例)user1、user2

9 Java言語で用いられている変数命名ルール1
クラス名  パスカル記法 先頭を大文字、それ以外は小文字、言葉の区切りは大文字    例) NewJFrame、MainActivity、等々 メソッド名   キャメルケース記法    先頭を小文字、以降も小文字、 言葉の区切りは大文字 2.1 フィールドの値に対する取得と設定メソッド   フィールドの値を取得するメソッド: 先頭をget  フィールドの値を設定するメソッド: 先頭をset   例) getText、setText、setColor、等々

10 Java言語で用いられている変数命名ルール2
2.2 boolean変数を返すメソッド    メソッド名が命題を表すように命名する    is + 形容詞 例) isSelected、isEnabled, 等々 定数名 すべて大文字 複合文字の場合は区切りをアンダースコア "_" で結合。(スネークケース記法)   例) PI、LENGTH、INPUT_VALUE、等々 変数名 すべて小文字、 複合文字の場合は区切りを大文字する   例) errMsg、inputData、等々

11 ソースコードに付けるコメントについて なぜつける?:ソースコードの内容を理解し易くするため。
どのような時に有効?:ステートメントの補足や注意事項、処理の概要 や意図を伝えたい時に有効。 記述は必要最小限に留める。→ソースコードで内容を伝えるのがベス ト。  より詳細な説明な必要な場合は所定のドキュメントで説明する。

12 例1) ステートメントの補足・注意事項の付記
例1) ステートメントの補足・注意事項の付記 String username; String password; ・・・ // 8文字以上の英数字に制限 private void jButtonExchangeActionPerformed(ActionEvent evt) { int dollar=Integer.parseInt(jTextFieldDollar.getText()); double rate=112.6; yen=(int) (rate*dollar); jTextFieldYen.setText(String.valueOf(yen)); } //2018年9/21時点のドル→円の為替レート

13 例2) 処理の概要・意図の付記 ・・・ // data1とdata2の入れ替え temp=data1; data1=data2;
例2) 処理の概要・意図の付記 // data1とdata2の入れ替え ・・・ temp=data1; data1=data2; data2=temp; 数行のソースコード内容をまとめて確認できるため、ソースコードをすばやく読むことができる。 制作者の意図が分かる // ボタン色の切り替え:論理変数flagを使って色を切り替えている boolean flag=false; private void jButton1ActionPerformed(ActionEvent evt) { String a; if(flag) { jButton1.setBackground(Color.white); flag=false; } else{ jButton1.setBackground(Color.red); flag=true;

14 例3) メソッドの処理内容(概要)の付記 ・・・ // 3つの引数(整数)の中の最大値を返すメソッド
例3) メソッドの処理内容(概要)の付記  ・・・ public int maxValue(int a, int b, int c) { int ans; if(a>=b && a>=c){ ans=a; } else if(b>=c) { ans=b; else { ans=c; return ans; // 3つの引数(整数)の中の最大値を返すメソッド メソッドの処理内容がすぐに分かり、利用しやすくなる。

15 基礎課題1-2(コメントの練習) プログラムの処理内容が分かるように次の空欄に適切なコメントを記入して下さい。 ・・・ //
int data1=Integer.parseInt(jTextField1.getText()); int data2=Integer.parseInt(jTextField2.getText()); int data3=Integer.parseInt(jTextField3.getText()); double ans; // 答を代入する変数 ans=(data1+data2+data3)/3.0; jTextFieldAns.setText(String.valueOf(ans)); 入力データを定義 3つの整数の平均を求める

16 字下げの徹底 <悪い例> <良い例> プログラムの構造を明確にするために字下げを徹底して下さい。不要なミスを防げます。
 void jButton1ActionPerformed(ActionEvent evt) {  int a=Integer.parseInt(jTextField1.getText()); if( (a%2)==0 ) { jTextField1.setText("偶数です。"); } else {    jTextField1.setText("奇数です。");} } カッコが閉じているのか分からない! void jButton1ActionPerformed(ActionEvent evt) { int a=Integer.parseInt(jTextField1.getText()); if( (a%2)==0 ) { jTextField1.setText("偶数です。"); } else { jTextField1.setText("奇数です。"); <良い例>

17 【応用課題1-A】解答例 private void jButtonKeisanActionPerformed(ActionEvent evt) {   int total=1;   int day=1;   int savings=1;   while(total<=10000){ day=day+1; savings=savings*2; total=total+savings;   }   jTextFieldDay.setText(String.valueOf(day)); }


Download ppt "ソフトウェア制作論 平成30年9月26日."

Similar presentations


Ads by Google