2016-09-12 3 views
1

私は以下のコードで使用される変数の量を減らそうとしています。
理想的には、変数を再利用して、LatestRipMeVersion string[]変数を作成しないでください。
Skip(1)First()を行うために配列を作成する必要がありますか?
最終的にLatestRipMeの値に達することはできますか?このコードで使用される変数を減らすにはどうすればよいですか?

private void RipMeGetLatestVersion_Process() 
{ 
    //Get the .json file and save it in LatestRipMe string 
    LatestRipMe = ClientRipMe.DownloadString("http://www.rarchives.com/ripme.json"); 

    //Create an array from the previously saved string, and skip the first line 
    LatestRipMeVersion = LatestRipMe.Split(Environment.NewLine.ToCharArray()).Skip(1).ToArray(); 

    //Put the array back in a string, and select only the first line 
    LatestRipMe = LatestRipMeVersion.First(); 

    //The characters which need to be removed 
    char[] LatestRipMeTrim = { ' ', ' ', '"', 'l', 'a', 't', 'e', 's', 't', 'V', 'e', 'r', 's', 'i', 'o', 'n', '"', ' ', ':', ' ', '"', '"', ',' }; 

    //Trim the above declared characters 
    LatestRipMe = LatestRipMe.Trim(LatestRipMeTrim); 

    //Show the remaining string content in the TextBlock 
    LatestRipMeVersionText.Text = "Latest RipMe version: " + LatestRipMe; 
} 
+11

他にもJSONパーサーを使ってJSONを解析することができます。そうすればコードはもっと明らかになります。 –

+0

あまりにも多くの変数があるため、コードは複雑ではなく、(実際の質問の場合でも)不適格でもありません。変数は、あなたがやっていることに名前をつけてコード理解を増やすので、良いことです。それらを減らすことはあなたの主題ではないはずです。 – HimBromBeere

+0

Jonの洞察力のあるアドバイスに耳を傾けたくない場合は、複数行の正規表現を使用することができます。とにかくすべての行を読むので、文字列には確実にバージョンが含まれています。また、入力が期待どおりでない場合は、エラー処理が改善されます。 –

答えて

2

あなたは置き換えることができ

LatestRipMe = LatestRipMe.Split(Environment.NewLine.ToCharArray())[1]; 

あるいは

LatestRipMe = LatestRipMe 
      .Split(Environment.NewLine.ToCharArray())[1] 
      .Trim(new char[] { ' ', 'a', 'b' }); // etc ... 

意見に

//Create an array from the previously saved string, and skip the first line 
    LatestRipMeVersion = LatestRipMe.Split(Environment.NewLine.ToCharArray()).Skip(1).ToArray(); 

    //Put the array back in a string, and select only the first line 
    LatestRipMe = LatestRipMeVersion.First(); 

:賢い
スタイルは、それが、醜いデバッグすることは困難であるとサイトが期待しているものを返さないという例外をスローします(インターネットに接続していないなど)。あなたの明確で文書化されたステップをステップコードで置き換えるという願望を理解していないのは、プログラミングの課題がなければ、変数の数を減らすことだけです。

+0

ありがとう!これは私の質問に対する素晴らしい答えです。 しかし、Jon Skeetが上記のように提案したように、私はjsonパーサを使用します。しかし、あなたの答えは間違いなく将来私を助けます。 – Dyon

+0

"私は本当にあなたのクリアを置き換えるという欲求を理解していません"しかし、 "醜い、デバッグが難しく、例外がスローされます"と答えたのですが... – HimBromBeere

0
private void RipMeGetLatestVersion_Process() 
{ 
    LatestRipMe = ClientRipMe.DownloadString("http://www.rarchives.com/ripme.json"); 

    LatestRipMeVersion = LatestRipMe.Split(Environment.NewLine.ToCharArray())[1]; 

    LatestRipMe = LatestRipMe.Trim(" \"latestVersion\" : \"\",".ToCharArray()); 

    LatestRipMeVersionText.Text = "Latest RipMe version: " + LatestRipMe; 
} 
0

これは、あなたが望むものを与えるはずですが、このコードで間違っている可能性があることに注意してください。

private void RipMeGetLatestVersion_Process() 
    { 
     LatestRipMeVersion = ClientRipMe 
      .DownloadString("http://www.rarchives.com/ripme.json") 
      .Split(Environment.NewLine.ToCharArray()) 
      .Skip(1) 
      .ToArray(); 

     LatestRipMe = LatestRipMeVersion.First() 
      .Trim(' ', ' ', '"', 'l', 'a', 't', 'e', 's', 't', 'V', 'e', 
      'r', 's', 'i', 'o', 'n', '"', ' ', ':', ' ', '"', '"', ','); 
     LatestRipMeVersionText.Text = "Latest RipMe version: " + LatestRipMe; 
    } 
+0

あなたは 'LatestRipMeVersion'が。 – Abion47

0

多くの人が既にあなたに言ったように、このコードには多すぎることがあります。 JSONパーサーを使用し、コードの命名と構造化にいくつかの標準的な規則に従ってください。私はあなたのコードがあなたがしたいことをまだしていないと感じています。下記の私のバージョンを見てください。これは、あなたが正しく欲しいものを行います(jsonの属性latestVersionの値を取得します)。これは良いコードですが、あなたの持っているものよりもはるかに優れています。

関連する問題