リファクタリングコード


おい、皆さん!あなたがそれを維持しているならば、あなたは私のクラスOSD 600のために私のNoob
Rssg


タスク
今週は、変数の名前を変更したり、ロジックを分離するなどのコードを屈折させる3つの方法を見つけることになっています.RSSGのために、耐火物によって決定しました
エラーがあるならば、主なプログラムのためにプロセス終了0を返す
  • それが
  • をするかについてより顕著であるためにReadRoundテキスト機能を改名していること
  • は、それがより読みやすい
  • であるように、プロセス機能のロジックを切り離した

    ステップ
    いつもコミットを表示したい場合は です
    here
    - 1
    私の非常に最初のステップは、この不良少年を屈折させた
    pub fn run() {
        //Takes appropriate action based on arguments passed ex. rssg --input
        read_arguments().unwrap();
    }
    
    read_arguments()はCLI引数と一致するコードを持っていて、必要に応じてErrを返します、しかし、私はそのような中でprogram::exit(0)を呼んでいました
    if env::args().count() == 2 {
        println!("Please enter input. Type rssg --help or -h for more information.");
        process::exit(0);
    }
    
    私がちょうど必要に応じてerrを返すことができたとき
    return Err("Please enter input. Type rssg --help or -h for more information.".into());
    
    そして、このように
    pub fn run() {
        //Takes appropriate action based on arguments passed ex. rssg --input
        if read_arguments().is_err() {
            process::exit(0);
        }
    }
    

    菅2
    これは非常に簡単でしたが、それは多くの感覚を作りました
    引数が有効なファイルであれば、それぞれの引数を通ってプロセス関数を呼び出します.
    pub fn read_text(args: &[String]) -> Result<(), Box<dyn Error>> {
        //Iterate through each input and process
        args.iter().for_each(|arg| {
            if let Ok(mut file) = fs::read_to_string(arg.to_owned()) {
                //Reaches this if the argument was just a filename
                process(&mut file, arg);
            } else if Path::new(arg).is_dir() {
                //Argument is a directory so we have to recursively search the dir
                let path = Path::new(arg);
                visit_dirs(path, &process).expect("Couldn't convert dir");
            }
        });
    
        Ok(())
    }
    
    それははるかに適切にread_argumentsとして命名されます

    菅3
    以前に、入力ファイルをHTMLファイルに変える私のプロセス関数はsuuuuuuperでした.私はこのロジックを2つの別々の関数に分離し、代わりにif checkの中に呼び出します.これは、コードを読みやすく、次のように簡単になります.
        if vec_lines[1].is_empty() && vec_lines[2].is_empty() && !vec_lines[0].is_empty() {
            process_file_with_title(
                vec_lines,
                &mut html,
                &mut firstline,
                &mut is_header,
                &mut line,
                prev_tag,
                ext,
            );
        } else {
            process_file_with_no_title(
                &name,
                default_content,
                vec_lines,
                &mut html,
                &mut firstline,
                &mut is_header,
                &mut line,
                prev_tag,
                ext,
            )
        }
    

    再舗装
    これはかなりクールなプロセスだった.チェックアウト分岐では、read_textを実行することで、複数のコミットを1つにまとめることができます.それは知っている非常に涼しいgitコマンドです、しかし、私はどれくらいしばしば私が正直にそれを使うかについて、わかりません.将来使用できるツールとして使えるのは素晴らしいです.