Swift-style-guide: Mempertimbangkan kembali array kosong dan inisialisasi kamus

Dibuat pada 7 Apr 2016  ·  3Komentar  ·  Sumber: raywenderlich/swift-style-guide

Panduan gaya saat ini mengatakan bahwa array dan kamus diinisialisasi dengan cara berikut.

var names = [String]()
var lookup = [String: Int]()

Saya ingin mendorong kembali ini demi:

var names: [String] = []
var lookup: [String: Int] = [:]

Inilah alasan saya:

  • [Type]() terlihat asing, terutama untuk pendatang baru. Bagi saya, : [Type] = [] hanya membaca lebih baik dalam banyak kasus.
  • Ketika saya melewatkan array kosong (atau OptionSetType) sebagai argumen di mana inferensi tipe tersedia, saya selalu menggunakan [], bukan objek yang diinisialisasi default. Ada beberapa konsistensi di sini.
  • Singkatnya, array baris tunggal, tipenya sering dapat disimpulkan. Ini bagus dan harus dimanfaatkan. Namun, untuk array yang menjangkau banyak baris, inferensi tipe bisa menjadi mahal. Mempertimbangkan:
var stuff = [1, 2, 3, 4, 5,  // ... 100 more numbers
                  106.7, 107, "haha", nil, 108, 109]

Pemeriksa tipe perlu memindai semua elemen untuk mengetik dengan benar infer stuff . Bahkan ketika tidak ada trik ("haha"), saya telah melihat ini menghambat editor. (Halo pelangi.) Membuat pemeriksa tipe bekerja untuk Anda untuk memeriksa ulang pekerjaan Anda sepertinya ide yang bagus.

Bagaimana menurut anda?

Komentar yang paling membantu

@rayfix Saya semakin menyukai format yang Anda sarankan yaitu var names: [String] = []

Rasional saya adalah bahwa pendekatan ini terlihat lebih konsisten dengan pendekatan yang akan Anda ambil ketika Anda ingin mendefinisikan sebuah array dengan konstanta let . (Anda tidak akan menginisialisasi ke array kosong karena Anda tidak akan dapat mengubahnya nanti)

Misalnya dalam kasus kelas:

class SimpleClass {
    let array: [String]

    init(array: [String]) {
        self.array = array
    }    
}

Atau ketika mendefinisikan sebuah array konstan yang nilainya tergantung pada suatu kondisi.

let array: [String]
if condition {
    array = array1
} else {
    array = array2
}

Semua 3 komentar

@rayfix Saya semakin menyukai format yang Anda sarankan yaitu var names: [String] = []

Rasional saya adalah bahwa pendekatan ini terlihat lebih konsisten dengan pendekatan yang akan Anda ambil ketika Anda ingin mendefinisikan sebuah array dengan konstanta let . (Anda tidak akan menginisialisasi ke array kosong karena Anda tidak akan dapat mengubahnya nanti)

Misalnya dalam kasus kelas:

class SimpleClass {
    let array: [String]

    init(array: [String]) {
        self.array = array
    }    
}

Atau ketika mendefinisikan sebuah array konstan yang nilainya tergantung pada suatu kondisi.

let array: [String]
if condition {
    array = array1
} else {
    array = array2
}

Besar +1 ini!

Saya memilih notasi var array: [Type] = [] untuk kursus saya karena ini memungkinkan saya untuk mengajar array (dan kamus) cukup awal di kursus saya. Pendekatan pengajaran saya adalah memulai dari awal, menambahkan hanya satu topik pada satu waktu dan tidak pernah meninggalkan hal-hal yang tidak dapat dijelaskan. Notasi ini memungkinkan saya untuk melakukan itu karena tidak melibatkan topik apa pun yang belum dikenal siswa pada saat itu, seperti inisialisasi atau generik.

Suka sekali. Saya menggunakan sintaks yang Anda sarankan dalam basis kode saya sendiri; definisi dan jenis var di satu sisi persamaan, nilai di sisi lain. Bagus dan sederhana.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

fabienwarniez picture fabienwarniez  ·  9Komentar

rayfix picture rayfix  ·  3Komentar

jrturton picture jrturton  ·  3Komentar

ghost picture ghost  ·  26Komentar

aramezk picture aramezk  ·  9Komentar