つれづれ

Swift:コードレビュー

あともう一息というところまで来ていますので、コードの見直しをしました。

まだ、いくつか機能追加したい項目があります。ひとつは、前回処理したポイントから継続して再開する機能です。この機能実現のためには、処理中の変数をsaveしておく必要があります。

それで、変数の命名規則やそもそも使われていないものを整理しました。

再開ポイントのsaveの仕方は、MesaClipのときと同様に変数を配列にsetしてからsave / restoreする方式にします。そのとき、plistにする方法があるというのをどこかで見たような気がしますが、今はあまり時間的な余裕がないので、わかっている方法で実現したい、と考えています。

  • 変数を配列にsaveしていく。
  • 配列を.txtに書き出す。
  • .txtを読み込み、変数に展開する。
  • restoreのタイミングは、viewDidLoadの直後。初期処理後もしくは初期処理をバイパスしてrestoreする。

再開機能と言えば、昔々、MS Wordのようなプログラム開発をしていて、指定ページから清書したものを画面表示しなければなりませんでした。清書機能はページという器の中に何が入るかで、ページの終わりの条件が変化します。文字、改行・改ページ等の制御コード、図版、表の何が最後に来るか、ページの大きさに合わせて清書してみないことにはさっぱりわかりません。また、本の場合、右ページと左ページで柱(見出し)やノンブル(ページ番号)の位置が異なります。中でも、表がなき分かれると、レコード単位で禁則するか、泣き別れを許すかという問題も出てきて厄介です。

それでも、なんとかそれなりの再開機能を作ったのですが、正直、かなりいい加減なものになりました。今、思い起こしてみると、変数をすべてsaveするという発想ができなかったのは不思議な気がします。もしかすると、文字データベースの持ち方が問題で、その中に実アドレスを入れていたのかもしれませんね。もっとも、実アドレスと言っても、実際はベースレジスタからの相対アドレスのはずで、それ自体は問題なかったはずですが?

一番泣けてくるworkaroundは、指定ページから直線的に再開できないときは1ページ目から指定ページまでフォーマットするという迂回作でした。しかし、それでも、泣き別れが発生すると対象ページを表示できませんでした。これが自分の能力の限界だったのでしょう。

20代でプログラマをやめたのは、そういう意味でも正解でした。

Categories: つれづれ, Swift, 技術