2017-09-26 13 views
1

私はKotlinに静的関数がないことを知っていますので、OkHttpService.ktとmy.ktに2つのコードを書きます。Kotlinのクラスなしで、コンパニオンオブジェクトと楽しいことのどちらが優れていますか?

どちらが良いか分かりませんが、教えてください。ありがとう!

OkHttpService.kt

class OkHttpService { 

    companion object { 
     fun httpGet(username: String, callback: Callback) { 
      val fetchRepoUrl = "https://api.github.com/users/$username/repos?page=1&per_page=20" 

      val client = OkHttpClient() 
      val request = Request.Builder() 
        .url(fetchRepoUrl) 
        .build() 

      client.newCall(request).enqueue(callback) 
     } 
    } 
} 

定期objectを使用スコープについてはmy.kt

fun OkHttpService_httpGet(username: String, callback: Callback) { 
      val fetchRepoUrl = "https://api.github.com/users/$username/repos?page=1&per_page=20" 

      val client = OkHttpClient() 
      val request = Request.Builder() 
        .url(fetchRepoUrl) 
        .build() 

      client.newCall(request).enqueue(callback) 
+0

個人の好み。あなたはむしろクラスのような名前空間(OkHttpService)か、通常のpacakge-as-a-namespaceを持っていますか?後者では、明示的にオプションを指定する必要はありません: 'OkHttpService.httpGet()'。 –

+0

ありがとう!それは楽しいという名前を捨てる方がいいですか? – HelloCW

+0

申し訳ありませんが分かりません。個人的には、クラスのような名前空間のすべてが好きです。なぜなら、それは私にそれを使用するか静的にインポートするオプションを与えるからです。しかし、トップレベルの機能は、いくつかの状況で便利です(例えば、kts/replから呼び出す場合)。 –

答えて

4

ないcompanion

object OkHttpService{ 
    fun httpGet(username: String, callback: Callback) { 
     val fetchRepoUrl = "https://api.github.com/users/$username/repos?page=1&per_page=20" 

     val client = OkHttpClient() 
     val request = Request.Builder() 
       .url(fetchRepoUrl) 
       .build() 

     client.newCall(request).enqueue(callback) 
    } 
} 
+0

ありがとう! OkHttpService.ktのコード(コンパニオンオブジェクト...)が良い方法ではないことを意味しましたか? – HelloCW

+0

私は、あなたがそれのインスタンスを作成しない場合、クラスは存在しないべきであることを意味しました。コンパニオンオブジェクトはKotlinでは非常に限られた使い方しかありません。 – voddan

+0

ありがとう!しかし、私はオブジェクトを使用するより多くの制限があると言われた、あなたは一見することがありますhttps://stackoverflow.com/questions/46273453/which-way-is-better-if-i-hope-to-use-a-構文のちょっと静的な機能in-kotli – HelloCW

関連する問題