4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PLISEAdvent Calendar 2019

Day 4

ユーザー視点のプログラムを書くために(1)

Last updated at Posted at 2019-12-03

ユーザー視点のプログラムってなんだろう?

今日もシステムは稼働しています。
さて、どうでしょう。
もし、ログインしてとある画面を操作してみたら、なかなか応答が返ってこないなぁ、、、
ということが起きたら。

これにはいくつかの影響が考えられるでしょう。

  • プログラムの処理が終わっていない
  • メモリ枯渇によるDBの応答不能、エラー
  • 上記原因によるWebサーバの停止
  • ホスティングサービス上の障害、メンテナンス
  • etc

そして最悪なのが、自分が書いたプログラムがその原因だったのパターンですよね。

そうならないようにユーザー視点のプログラムを書けるようになりましょう。
そうすれば、自分の書いたプログラムが常に生きている状態となり、
ユーザーに喜んでもらえるシステムを維持することができます。

(私的)良いプログラムの3点セット

  • プログラム行数が短い
  • 処理時間が短い
  • メモリ使用が最適化されている
    まずはこの3つを意識すれば、大体運用上死なないプログラムになります。
    コードレビューやリファクタリングする際も、
    この視点を持つことでより良いプログラムにできると思います。

※プログラムの行数を短くするのはリファクタリングのテクニックが
該当するのでリーダブルコードを読むといいよ!

処理時間を短くする

文字連結時にはStringではなくStringBuilderを使う

Stringで文字列する場合


String name = "クアッカ";
name += "ワラビー";
name += "様";

コンパイル時


String name = new StringBuilder("クアッカ").toString();
name += new StringBuilder(name).append("ワラビー").toString();
name += new StringBuilder(name).append("様").toString();

このように、各オブジェクトが無駄に生成されてしまうことがわかります。
つまりメモリの使用量が一時的に増えます。
※実際はこのぐらいの文字列であれば大差ないですが、
もし巨大な文字列出力する際に、Stringを使ってしまえば、
サーバー上のメモリを逼迫してしまうことになるでしょう。

突然訪れるメモリ切れ

俺たちの戦いはこれからだ…!
来週に続かせてもらおうと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?