いくつかのプログラミングのテクニック

3701 ワード

以下に紹介する方法『プログラミング珠玉』にも言及されています
 
次の例はPythonで書かれていますが、これらの概念は任意のプログラミング言語に適用されます.
1.コード最適化
プログラムの主な実行経路を見つけます.あなたのプログラムはほとんどの時間でこれらのモジュールを実行します.まず、このコードを最適化しますが、プログラム実装の最初の反復では最適化しないでください.注意すべきパフォーマンスの問題が発生しない限り、境界状況または失敗/例外処理を処理する場所では、このコードを最適化する必要はありません.  .
2.コード行数
コード行数を圧縮しようとしないでください.ただし、各タスクのコード行数を圧縮する必要があります.簡単な関数/メソッドを書きます.各関数/メソッドは複数ではなく、1つのタスクしか完了しません.良い理由がない限り.
人々は通常、コードの行数を減らすために1つのコードクリップで多くの作業を完了することが好きで、これはコードが異常に複雑になり、このコードは様々な状況の処理をサポートしようとしますが、多くの場合、その1つの状況だけが発生します.余分な処理は実行にコストをもたらします.
3.オペレーティングシステムとコンパイラの知識を多く学ぶ
機械を理解し、機械の内部がどのように働いているかを理解する.これは、さまざまなボトルネックの原因を理解するのに役立ちます.これは、コードの実行時になぜ奇妙な現象が発生するのかを見つけるのに役立ちます.
4.運用管理技術
プログラミングで管理技術を運用する.目的に応じて正しいツールを使用します.私は自分の好みがありますが、克服しようと努力しています.
5.異常処理とif-else文の使い方
プログラミングするとき、いくつかの境界状況は正しく処理できることを確保する必要があります.これらの場合、if文を使用して、このような状況であるかどうかを確認します.プログラムが実行されると、これらのチェック動作は毎回実行され、これらの特殊なシーンが発生したかどうかを確認します.プログラミング言語に異常な処理システムがある場合は、これらの境界状況を処理するために使用することができます.
C言語に異常処理システムはありません.エラーコードに依存して、呼び出された関数に何が起こったかを通知します.0を返すと成功、負数は失敗を表します.したがって、呼び出し者は、if-elseを用いて戻りコードを検査する必要がある.他に方法はない.
しかし、異常処理システムのあるプログラミング言語については、それらをよく利用することができます.しかし,if-elseを用いて異常処理機構と組み合わせてこれらの境界状況や誤りを処理する必要がある.
簡単な例です.-
起動時と停止時にpidファイルをチェックするバックグラウンド実行プログラムを想像します.次の関数を呼び出してpidを取得します.プライマリ・コール関数は、プログラム・ロジックが予期せぬものにならないように例外キャプチャを使用します.
次の場合、この関数は呼び出されます.
このバックグラウンドプログラムの起動時このバックグラウンドプログラム停止時各ケースで主関数が行うべきこと-
起動時
pidファイルが存在する場合は、バックグラウンドプログラムで実行されることを意味します.このプログラムは自分で停止し、別のインスタンスが実行されていることを示します.
このファイルを読み込むときにエラーが返された場合、pidファイルがないことを示し、このプログラムが実行されていないことを示します(ファイルを読み込むときに事故が発生しない限り).pidファイルを作成し、プログラムを起動します.

停止時
pidファイルが見つかったら、停止する前にこのファイルを削除します.
pidファイルが見つからなかったらどうすればいいですか?これはバックグラウンドプログラムがまったく実行されていないことを示しています.ユーザーにレポートします.

次に、上記のメインプログラムが呼び出すpidを取得するコードを示します.これらの状況を処理するために、例外キャプチャおよびif-else文を使用することに注意してください.
方法1
#            ,         。

def read_pid_file():



    try:

        f = open('daemon.pid', 'r')



        pid = int(f.read())

        return pid



    #       ,    IO  

    except IOError:

        raise "Faild to Read file"



    #             ,    ?



    except ValueError:

        raise WrongPID



    #         

    #      



    #         

    except Exception:

        raise SomeUnKnownError

方法2
#   If/else  。              

#     



def read_pid_file():

    if os.path.exists('daemon.pid'):



        try:

            f = open('file.pid', 'r')



            #                ,

            #        ,    

            #    C     

            return int(f.read())



        except (ValueError, IOError):

            pass

方法3
#    ,           ,  pid   



#       ,        。

#                 。

#           。



def read_pid_file():

    f = open('daemon.pid', 'r')



    return int(f.read())

私は方法3が好きです.多くの場合可能だからです.ごくわずかな場合にエラーが発生した場合、プライマリ・コール関数の例外処理がこの状況をキャプチャします.  .
2つのエラー処理方式は、プログラムが間違っていないことを保証する重要な方法です.if-else文の使用時期
私たちが何かが起こる可能性があることを知ったとき.いろいろな状況に分かれるかもしれません.(C言語のエラーコードメカニズムは良い例です).
我々は通常,if−elseを用いて入力値に基づいて実行経路を制御する.
例外処理の使用方法
異常をキャプチャしたいか、異常をキャプチャしたいが、自分で処理しないで、システムに渡して処理します.例外メカニズムをサポートするプログラミング言語は、最上位レベルでこれらの例外をキャプチャし、ユーザーに報告します.
6.上記のすべてのポリシーを無視します.
時々事情はこのようにします!そして必ずしも悪いことではない.私たちがプログラミングするときは、新しいプロトタイプを開発したり、特別な問題に対して解決策を探したりするとき、私たちがどのように実現するかは重要ではありません.重要なのは、定型化後にどのように完成するかです.多くの場合、私たちはこのようにしていると思います.誰もが知っているように,まず下書きをして,後で本当に動いた.
コメントにこれらの観点に対するあなたの考えを残してください.