自由気ままにブログ

地方零細企業プログラマがひっそりとなにかしています。

プログラムにタイピングの早さは必要なのか? 初心者におすすめのプログラム書き方

f:id:nono138:20200421225921p:plain

タイピングの早さの必要性

twitterでタイピングを練習している方を多く見受けられ、プログラミングにおいて、タイピングの早さって大事なのではと思っている方も多いと思います。

結論から言うと、必須ではありません。

むしろ、遅くても全然大丈夫です。

弊社の社長は、IT業界40年以上の大ベテランで、某大手の学校で講師もしていた程のキャリアを持っています。

じゃあ、タイピングは滅茶苦茶、早いねと思われるかもしれませんが、ぶっちゃけ滅茶苦茶、遅いです。

タッチタイピングはおろか、人差し指2本でコーディングしています。

私が分からないことを聞きに行く時は、言うからちょっと代わりに書いてとよく言われます。

開発速度は?と言うと早いです。

開発しよとしているシステムのプロートタイプを荒削りではありますが、土日間でだいたい作ってしまいます。

私の10倍ぐらい早いですね😨

つまり、プログラムを組む際には、書く速さより考える速さの方が大事だと分かりますね。

とは言った物の、タッチタイピングが出来るに越したことはないですけどね😅

もちろん、両方出来るのが最強なんですけどね。

プログラムを書く速度は考える速さへの依存が大きいです。

 

初心者におすすめのプログラムの書き方

初心者にやってしまいがいなのが、いきなりプログラムを組むことです。

フローチャートを作っている方なら大丈夫ですが、独学などでそこまで出来ている人は少数だと思います。

また、フローチャートを分かりやすく、書くにはまた知識が必要になるのも初心者にはツライところ…😥(私も書くのは嫌いです。)

私は、一回文章で一連の流れを日本語で書くことをおすすめします。

紙で起こすのも良いですが、ソースコード上にコメントとして書きことを私はおすすめします。

コメントを書く癖も付きますし😊

 

 サンプル例

コードをある程度書く前の流れを見てみましょう。

package algorithmGo

import (
    "fmt"
)
//計算させる構造体
//main関数
//構造体インスタンス
//構造体に値を入れる
//足し算メソッドの呼び出し
//引き算メソッドの呼び出し
//掛け算メソッドの呼び出し
//割り算メソッドの呼び出し
//計算結果をまとめる
//結果の数だけ、出力
//足し算メソッドの作成 結果を戻り値に
//引きメソッドの作成 結果を戻り値に
//掛け算メソッドの作成 結果を戻り値に
//割り算メソッドの作成 結果を戻り値に
//結果出力の関数作成

 

実際に書いて見ましょう

サンプルコード
package main

import (
    "fmt"
)

//計算させる構造体
type mathNums struct {
    num1 int //変数名は適当ですが、本来はきちんと付けましょう。
    num2 int
}

//main関数
func main() {
    //構造体インスタンス
    mathNums := new(mathNums)
    //構造体に値を入れる
    mathNums.num1 = 6
    mathNums.num2 = 2
    //足し算メソッドの呼び出し
    addNum := mathNums.add()
    //引き算メソッドの呼び出し
    subNum := mathNums.sub()
    //掛け算メソッドの呼び出し
    multiNum := mathNums.multi()
    //割り算メソッドの呼び出し
    divNum := mathNums.div()
    //計算結果をまとめる
    resultNum := []int{
        addNum, subNum, multiNum, divNum,
    }
    //結果の数だけ、出力
    for i := range resultNum {
        outReseult(resultNum[i])
    }
}

//足し算メソッドの作成 結果を戻り値に
func (math *mathNums) add() (resultNum int) {
    resultNum = math.num1 + math.num2
    return resultNum
}

//引きメソッドの作成 結果を戻り値に
func (math *mathNums) sub() (resultNum int) {
    resultNum = math.num1 - math.num2
    return resultNum
}

//掛け算メソッドの作成 結果を戻り値に
func (math *mathNums) multi() (resultNum int) {
    resultNum = math.num1 * math.num2
    return resultNum
}

//割り算メソッドの作成 結果を戻り値に
func (math *mathNums) div() (resultNum int) {
    resultNum = math.num1 / math.num2
    return resultNum
}

//結果出力の関数作成
func outReseult(printNum interface{}) {
    fmt.Println(printNum)
}
結果
8
4
12
3

 

どうでしょうか?面倒臭さもありますが、書きやすさも上がるはずです。

コメントが少し多すぎると感じる場合は後から消してあげた方が良いかもしらません。

コメントが多すぎてもよくありませんが、全く書かないのもかなりの問題です。

 

個人的、書き置き場

今回は簡単なソースで書いていますが、システムが複雑になるといきなり全部を書こうとするとかなり難しいです。

後から、こんな処理が欲しいなどの追加処理も未然に防ぐことが出来ます。

また、main関数は基本的にあまり処理をせず、制御するだけにしておくと、エラーの発見もしやすいと思います。

 

私事ですが、最近、腱鞘炎でしょうか?かなり腕が痛く感じます😂

痛みが酷くなるようだったら、暫くはブログやプログラミングをお休みするか、抑えるかしようかなと思っています。

何に対しても、やはり、身体が資本ですね😑