2016/05/06

[c/c++]最近っぽいコードを書けるようになりたい

休みなので、ぐだぐだしていた。
いや、普段からぐだぐだしてるのかもしれないが、そこは忘れてくれ。

どういう経緯か忘れたけど、たぶん私が公開しているNFCライブラリを見てくださった方を見つけた。
このライブラリだと思う。ありがたや。
https://github.com/hirokuma/libhknfcrw_c

 

あ、と思ったのが、こちら。

https://twitter.com/rivarten/status/700385332777193474?lang=ja
image

これは「ごめんなさい!」と思った。
どういう風になっているかというと、static変数がべたべたと確保してあって、各関数はそれを直接アクセスしているのだ。
だから複数向けにしたかったら、まずはこの変数たちを何とかしてやらんといかんのだ。

 

いや、これを読んだ当初は、「あー、私は組み込み屋さんだから、最小限に仕上げたかったんですよー」と心の中で思っていたのだ。

どうせR/Wは1つしか持っていなかったし。
複数考慮するとその分の動作が遅くなるし、メモリも増えがちになるから、もういいことにしておいた。
当時取り組んでいた仕事が、関数コールしてよいシーンとよくないシーンが発生するような動作クロックで、ROMもぎちぎちなプロジェクトだったので、その影響が強く出ていたのは否定しない。

 

しかし・・・いろいろ考えると、そういうものでもないということに気付いてきた。
最近はROMも多いし、RAMも多い。
動作クロックもかなり速い。
なにより、作ったライブラリが省電力対応していないので、自分の言葉に説得力が無くてねぇ。。。

 

まあ、このときは、ライブラリとして仕立てるよりも、「どうやったらRC-S620/Sは制御できるの?」が先だったので、うん、ごめんなさい、というところだ。


これとは別に、仕事でC++の単体テストをしようとした。
そのときにテストスイートを使えば簡単にできるのだろうと思っていたのだけど、そうそう簡単にはいかず、その方法はあきらめてしまった。

 

この2件が近い時期だったので、ちょっとこれじゃまずいんじゃなかろうか、と思うようになってきた。
ツールを使ったりとか、ライブラリを使ったりとか、そういうところは新しいものを取り入れていたのだが、コーディングの技術がそれに追いついていないと言うことに気付いたのだ。

C/C++は枯れてきてて、特に組み込み向けなんて昔の知識にちょろちょろっと新しいのを加えれば済むだろうなどと甘いことを思っていたが、ちゃんと腰を据えて勉強し直すというか、最近の状況に合わせていかないとねぇ。
新しい酒は新しい革袋に、というやつだ。


モダンC言語プログラミング

この本が、よく出てきていたので、買ってみた。
まだ「C言語とオブジェクト指向」しか読んでないけど、途中までは「うんうん」と思っていたが、だんだん「うっ、ここまでやるの?」となってしまった。
まあ、何事も例に過ぎないのだけど、ここまでやれるというのは参考にすべきだろう。

 

長いこと分野が近いコーディングをしてきて、あまり失敗がなくなっていると、それが正しい、と思い込んでいることがあるので、謙虚になるところから始めねばなるまい。

↑↑↑
というのを文字にして自分に読ませないと、私は頑固な方だから、なかなか思い込むことができないのだ。
ときどきくどくなるかもしれんが、すまんな。