川のブログ

川の適当気ままなブログです。 

2017年 反省

こんにちはかわです。

アドベントカレンダー25記事目になるはずだったものです。

去年立てた目標を見ながら反省していきたいと思います。

kawakawa.hatenablog.com

コンテストで賞をとる

コンテストや大会にはいくつか出ました。

その中でも飛行ロボコンの自動操縦部門で2位になれたので達成ですかね。

kawakawa.hatenablog.com

勉学に対して意識を高め、理解力UP

耳が痛い話ですね。

言い訳をすると今年は去年より忙しかった気がします。

もっと勉強に精進すべきですね。

専門科目が少しわからない部分があるので勉強したいと思います。

良い、やってみたいことはすぐ行動する

行動しました。

むしろやりすぎてきつかったので、

自分のペースで挑戦していきたいと思います。

インターンも数社行かせていただきました。

勉強会にも行かせていただきました。

現在もプロジェクトに入って作らせていただいてます。

今年は今までよりも充実していたと思います。

しかし、身になったかと言われると微妙な感じがしています。

来年は今まで体験したことを身につける。

自分の能力を高めていきます。

感謝を忘れない

う〜ん

う〜ん

もっともっと日々感謝していきます。

こんな感じですね

いろいろなことに挑戦したのはいいものの、

どれも中途半端になってしまったという感じです。

来年は自分のinputとoutputを意識して行動していきたいと思います。

来年の目標

  • 一年で技術系の記事100個
  • わからないことはすぐ調べる、行動する
  • 自分が作りたいと思ったものはすぐ作成
  • 感謝の気持ちを忘れずに

以上を目標として日々精進していきたいと思います

今年自分に関わってくださった方全てに

この場を借りて感謝の気持ちを伝えさせていただきます。

ありがとうございました。

来年もよろしくお願いします。

余談

去年のpokemon Go の図鑑 f:id:nakanaka1826:20171231203903p:plain

今年のpokemon Go の図鑑 f:id:nakanaka1826:20171231203909p:plain

たくさん捕まえました。

来年も捕まえていきます

リーダブルコードを読む part3

こんにちはかわです。

アドベントカレンダー18記事目書いていきます。

前回の続きです。

kawakawa.hatenablog.com

3章 誤解されない名前

名前が「他の意味と間違えられることはないだろうか?」と自問自答する

 

1 と 2

誤解を招く名前は変更する

例:Clip(text, length)

def Clip(text, length)
  ・
  ・
  ・

このままだと

  • 最後からlength文字を削除
  • 最大length文字まで切り詰める

のかわからない

疑問を抱かせる名前はだめ

max_charsにすると効果的

3 限界値を含めるときはminとmaxを使う

限界値を明確にするため、名前の前に

max_

min_

をつける

4 範囲を指定するときはfirstとlastを使う

範囲を指定する際に「start」「stop」を使うことがあるが、

stopは複数の意味に解釈される事がある。

包含的な範囲(終端を範囲に含める)なら、firstとlastを使う方がいい

5 包含/排他的範囲にはbeginとendを使う

プログラミングの命名規則では、包含/排他的範囲にbegin endをよく使う

endは少し曖昧だが、英語にはこれに置き換わる語がない(らしい)

beginとendを使うことが最善であるらしい

6 ブール値の名前

ブール値の変数やブール値を返す関数の名前を選ぶ際は、

true falseを明確にすべし

trueかfalseのどちらが正しいかをそれとなくにおわせる必要がある

is や hasを使いブール値だとわかるようにする

否定形は避ける

7 ユーザの期待に合わせる

ユーザが先入観を持っているために誤解を招くことがあるため、

誤解されない名前に変更する必要がある。

例としてget*()をあげると、

コストが低いものだという先入観がある(らしい)。

もしコストが高いのであればこれを明示される名前に変えるべき。

8 例:複数の名前を検討する

名前を決めるときは、複数の候補を検討すべし

最善の名前とは、誤解されない名前である

以上

kawakawa.hatenablog.com

リーダブルコードを読む part2

こんにちはかわです。

アドベントカレンダー17記事目です。

続きを書いていきます。

kawakawa.hatenablog.com

2章 名前に情報を詰め込む

1 明確な単語を選ぶ

「get」はあまり明確ではない

例 def GetPage(url):

・・・

これはどこから取ってくるものなのか?

インターネットから取ってくるのであれば

「Feach」「Download」のほうが明確

例 Size -> Height NumNodes MemoryBytes 等

シソーラス類語辞典)で調べるべき。

気取った言い回しより明確で正確に

2 tmpやretvalなどの汎用的な名前を避ける

tmp・retval・foo この3つより

目的、実物の値を表した名前を選ぶ

retvalには「戻り値」という情報しかないためプラスαの情報を付加する

tmpという名前は、生存期間が短く、一時的な保管が大切な変数にだけ使用

ループイテレータ(i, j, k, iterなど)が複数ある場合、

説明的な名前にするとバグが目立ちやすくなる

3 抽象的な名前よりも具体的な名前を使う

例 ServerCanStart() -> CanListenOnPort()

任意のTCP/IPポートをサーバがリッスンできるかを確認するメソッド

変更後のほうがメソッドの動作をそのまま表している

4 名前に情報を追加する

名前は短いコメントのようなもの

大切な情報があれば「単語」を変数名に追加する

値の単位や危険や注意を換気する情報も追加したほうがいい

5 名前の長さを決める

スコープが小さければ短い名前でいい

->スコープが大きいならば長い名前を

エディタの「単語補完」機能を使用すべし

頭文字や省略形を使用する場合、誰が見ても明確に

不要な単語は取り除く

6 名前のフォーマットで情報を伝える

qiita.com

いろいろなフォーマットがあるためチームで統一して書くべし

大文字やアンダースコアに意味を持たせる

以上

kawakawa.hatenablog.com