タグ

抽象化に関するlen_progのブックマーク (3)

  • プログラミングにおける過度な抽象化についての、若干のメモ - Line 1: Error: Invalid Blog('by Esehara' )

    はじめに 少し思うところがあって、『コード・シンプリシティ』を読みかえしている。 というのも、このには「一般的すぎるコードを書く」という項目があって、そのことがここ最近引っかかっているからだ。なぜ引っかかるのかというと、それはたびたび「抽象化」というか「共通化」という部分に対するアプローチにおいて、どこかモヤモヤすることがあって、それが何処から来るものなのかな、というのをちゃんと自分の中で言語化しておきたかったからだ。 継承 クラスベースのオブジェクト志向の場合、「継承」という概念がある。とりあえず、Web上に散らかっている適当な解説には、次のように書いてある。とりあえず、疑似コード的なものをPythonで書いてみよう。 class Animal(object): pass class Human(Animal): pass class House(Animal): pass 通常、この

    プログラミングにおける過度な抽象化についての、若干のメモ - Line 1: Error: Invalid Blog('by Esehara' )
  • 適切に抽象化されたコードとはなにかって話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    適切に抽象化されたコードを書く、というのはまさに言うは易し行うは難しだ。 最近私が心がけていることのうちのひとつに、「未来を予測しない」というのがあって、「ここはあとから変更とか追加があるかもしれない」と思って抽象化しておくみたいなことはやめようと思ってる。ひとことで言うと、よくYAGNIとか言われるアレです。 そもそも、なんのために抽象化するのかというということを考えると、ひとつは「一塊の手続きに名前を付けて隠蔽して外から中を意識しないで済むようにする」ってことと、その副産物として「交換可能性が高まる」っていうのがある。 抽象化して実装を隠蔽することで、 コードが理解しやすくなる インターフェイスさえ合ってれば交換可能な部品として扱えるようになる という利点があるから、わたしたちは抽象化を行うわけだ(だからこそ「名前重要」なわけですね)。 この後者の利点に注目すると、ついつい「あっあとか

    適切に抽象化されたコードとはなにかって話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    <追記>いろいろ反応あってたしかになーって思いましたが、ここで説明されてるのは「汎化」とか「パラメタライズ」としたほうが正しいですね。抽象化というと、一塊の手続きをブラックボックスにして、実装を隠蔽する面のほうが正解に近いです。でもまあそこを差し引いて読んでいただければ、それなりに有用ではある記事だと思うので、このまま残しておきます</追記> プログラミングに限らない話かもしれませんが、ふだんの生活で触れないような概念というのは、一度わかってしまえば便利なんだけど、どうしてもとらえどころがない、というようなことが多いと思います。プログラミングにもそういう概念はたくさんあって、わたしのような凡人は新しい概念にぶち当たるたびに苦労しています。今日はそんな中で「抽象化」という言葉について、「昔の自分にこうやって説明してあげたかったな〜」という説明をします。 プログラミングを学んでいく中で、「とり

    プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • 1