Skip to content

Instantly share code, notes, and snippets.

@alfianyusufabdullah
Created April 21, 2021 01:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alfianyusufabdullah/5f08c3f8bdcd51fdc2b1511f7d9b8592 to your computer and use it in GitHub Desktop.
Save alfianyusufabdullah/5f08c3f8bdcd51fdc2b1511f7d9b8592 to your computer and use it in GitHub Desktop.
We can make this file beautiful and searchable if this error is corrected: Illegal quoting in line 2.
{
"::boolean": "<p>Jika menggunakan Boolean untuk ekspresi,&nbsp;kamu&nbsp;tidak perlu lagi menuliskan nilainya.&nbsp;Cukup seperti di bawah ini:</p><br><pre style=\"\"><code spellcheck=\"false\">if (status){</code><br><code spellcheck=\"false\">...</code><br><code spellcheck=\"false\">}</code></pre>",
"::!!": "Hindari penggunaan double bang operator <strong>(!!)</strong> saat pengecekan null, karena akan memaksa suatu variable menjadi non-null. Dan jika ternyata variable tersebut bernilai null, maka bisa menyebabkan <strong>NPE</strong><a data-target-href=\"https://www.dicoding.com/academies/55/tutorials/1538?from=1573\" href=\"https://www.dicoding.com/academies/55/tutorials/1538?from=1573\" rel=\"noreferrer nofollow noopener\" target=\"_blank\">.</a> Periksa kembali semua kode kamu dan jangan biarkan satupun operator tersebut tersisa.&nbsp;",
"inspect": "<p>Agar memastikan project yang kamu buat terhindar dari segala bentuk warning ataupun error, Anda bisa melakukan inspeksi kode dengan mudah melalui <strong>Analyze → Inspect Code</strong>.</p>",
"deprecated": "Kode yang deprecated sebaiknya diupdate atau jika tidak ada update terbarunya maka sebaiknya jangan digunakan lagi",
"val/": "Variable yang tidak pernah dimodifikasi, sebaiknya dideklarasikan menggunakan <strong>val</strong>.",
"utils/": "Sebaiknya fungsi yang bersifat general dijadikan utils agar bisa diakes semua kelas dan tidak perlu menulikannya di setiap kelas.",
"comment/": "Hindari <em>Comment Code</em> yang berlebihan didalam sebuah kelas dan Jika tidak diperlukan kamu bisa menghapusnya.",
"plagiat": "<p style=\"\">Melalui proses pemeriksaan otomatis, kode pada project yang Anda submit menunjukkan <strong>tingkat kesamaan yang tinggi</strong> dengan kode pada project milik peserta lain.</p><p style=\"\">Penggunaan referensi diperbolehkan selama tidak menggunakan submission peserta lain sebagai dasar atau base project. Sesuai <strong>SOP</strong> yang sudah ditetapkan, kami <strong>mengutamakan proses dibandingkan dengan hasil</strong>.</p><p style=\"\">Kami tidak mentolerir segala bentuk plagiarisme, sesuai dengan <strong><em>terms of use</em></strong> pada poin berikut:</p><ul><li><strong>Melakukan pengumpulan aplikasi yang bukan merupakan karya developer tersebut.</strong></li></ul><p>Bisa dilihat pada halaman ini<a data-target-href=\"https://www.dicoding.com/termsofuse\" href=\"https://www.dicoding.com/termsofuse\" rel=\"noreferrer nofollow noopener\" target=\"_blank\"> </a><a data-target-href=\"https://www.dicoding.com/termsofuse\" href=\"https://www.dicoding.com/termsofuse\" rel=\"noreferrer nofollow noopener\" target=\"_blank\"><strong>https://www.dicoding.com/termsofuse</strong></a>.</p><p><br></p><p>Untuk informasi terkait hukuman suspend dapat dilihat pada halaman ini</p><p><a href=\"https://help.dicoding.com/academy-dicoding/informasi-tentang-suspend-akun-karena-plagiarisme/\" rel=\"noreferrer nofollow noopener\" target=\"_blank\">https://help.dicoding.com/academy-dicoding/informasi-tentang-suspend-akun-karena-plagiarisme/</a></p><p><br></p><p>Submission akan kami reject, untuk revisi selanjutnya Anda harus mengirimkan submission hasil karya Anda sendiri (<strong>tidak</strong><strong> menggunakan submission peserta lain kemudian dimodifikasi</strong>).</p><p><br></p><p>Yang seharusnya Anda lakukan adalah :</p><ol start=\"1\"><li>Periksa kembali checklist submissionnya</li><li>Pelajari kembali materinya</li><li>Buat proyek dari awal</li></ol><p style=\"\">Jika ada yang tidak dimengerti manfaatkanlah forum diskusi akademi.</p><hr><p style=\"text-align:right;\"><em>Salam</em></p><p style=\"text-align:right;\"><span style=\"color:rgb(0,0,0);\">Dicoding Reviewer</span></p>",
"suppres/": "Hindari penggunaan <strong>@Suppress </strong>yang tidak terlalu diperlukan karena akan menyebabkan kode yang bersifat warning tidak terdeteksi",
"notify()/": "Fungsi <span style=\"padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;\">notifyDataSetChanged()</span> seharusnya dipanggil ketika ada perubahan data pada adapter saja.",
"unused": "<p>Selalu perhatikan resources yang tidak pernah digunakan di dalam project karena akan mempengaruhi size APK nantinya. Kamu bisa memanfaatkan fitur <strong>Remove Unused Resource</strong> untuk menghapus resources yang tidak pernah digunakan.</p>",
"handler/": "Kode ini sudah deprecated, untuk mengatasinya kamu harus menambahkan argument berikut:<br><pre><code spellcheck=\"false\">Handler(<strong>Looper.getMainLooper()</strong>)</code></pre>",
"casting/": "Sebuah value yang tipenya nullable sebaiknya tidak di-casting ke variable yang tipenya not null karena bisa menyebabkan error. Pelajari tentang null safety pada link berikut <a data-reactroot=\"\" data-token-index=\"1\" href=\"https://kotlinlang.org/docs/null-safety.html#safe-calls\" rel=\"noopener noreferrer\" target=\"_blank\">https://kotlinlang.org/docs/null-safety.html#safe-calls</a>",
"::lib_version": "Library ini sudah tersedia versi terbarunya (). Silakan diupdate beserta library lainnya.",
"binding adapter": "<p>Kamu bisa menggunakan view binding dengan cara seperti ini</p><pre>inner class ListViewHolder(<strong>binding</strong> : <strong>RvUsersItemRowBinding</strong>) : RecyclerView.ViewHolder(<strong>binding</strong>.root)</pre><pre>override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListViewHolder {<br> val <strong>binding</strong> = <strong>RvUsersItemRowBinding</strong>.inflate(LayoutInflater.from(parent.context),parent, false)<br> return ListViewHolder(<strong>binding</strong>)<br>}</pre>",
"glide_extension": "Kamu bisa memanfaatkan Kotlin Extensions (<a data-target-href=\"https://kotlinlang.org/docs/reference/extensions.html\" href=\"https://kotlinlang.org/docs/reference/extensions.html\" rel=\"noreferrer nofollow noopener\" target=\"_blank\"><u>https://kotlinlang.org/docs/reference/extensions.html</u></a> )<br>Sebagai contoh :<br><pre style=\"\"><br><code spellcheck=\"false\">fun ImageView.loadImage(url: String?) {</code><br><code spellcheck=\"false\"> &nbsp;Glide.with(this.context)</code><br>&nbsp;&nbsp;&nbsp;&nbsp;<code spellcheck=\"false\">.load(url)</code><br>&nbsp;&nbsp;&nbsp;&nbsp;<code spellcheck=\"false\">.apply(RequestOptions().override(500, 500))</code><br>&nbsp;&nbsp;&nbsp;&nbsp;<code spellcheck=\"false\">.centerCrop()</code><br>&nbsp;&nbsp;&nbsp;&nbsp;<code spellcheck=\"false\">.into(this)</code><br><code spellcheck=\"false\">}</code><br></pre><br>Cara menggunakannya seperti ini: <br><pre><br><code spellcheck=\"false\"><strong>ImageView</strong>.load('url')</code><br></pre>",
"/apply": "<p style=\"\">Agar penulisan lebih singkat kamu bisa menggunakan <span style=\"padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;\">apply </span>seperti dibawah ini <br></p>",
"::redundant_lib": "Kamu sudah menggunakan libray ini pada line …, jadi yang ini bisa dihapus saja.",
"informasi": "<p>Sebaiknya tampilkan informasi ketika hasil pencarian user tidak ditemukan dan ketika user tidak memiliki followers atau following<br></p>",
"with": "<p>Kamu bisa menggunakan with agar kode yang ditulis bisa lebih ringkas</p>",
"criteria_notif/": "Tinggal sedikit lagi. Notifikasi sudah bisa muncul pada waktu yang telah ditentukan, tetapi ketika diklik tidak terjadi apa-apa, seharusnya ketika notifikasi diklik maka akan muncul halaman utama aplikasi. Silakan diperbaiki terlebih dahulu yaa. Semangat!!!",
"context_view_model/": "Jika kamu ingin menggunakan context di view model, maka sebaiknya gunakan <span style=\"padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;\">AndroidViewModel()</span>",
"start/": "Sebaiknya mulai gunakan <strong>start end</strong> dibandingkan <strong>left right</strong> untuk mendukung <strong>i16n</strong>",
"duplicate_object/": "Tidak perlu membuat object baru, gunakan saja yang sudah ada.",
"::inggris": "Cobalah untuk konsisten dalam penamaan sebuah id, variable, fungsi, dan kelas sebaiknya gunakan <strong>bahasa Inggris</strong> agar sesuai dengan convention code yang berlaku dan tidak terdeteksi typo oleh Android Studio.",
"function_naming/": "Sebaiknya penamaan fungsi ini menggunakan kata kerja yang sesuai dengan tujuan fungsi ini dibuat.",
"child_to_parent/": "Karena parent layout tidak digunakan, kamu bisa langsung menggunakan view utama dari file ini&nbsp;",
"reject_duplicate_fav/": "Terdapat duplikasi data ketika user ditambahkan ke favorite. Seharusnya <strong>id user</strong> dijadikan <strong>primary key</strong> untuk menghindari terjadinya duplikasi data user favorite. Silakan diperbaiki terlebih dahulu yaa.",
"tag empty body": "<p>Tag yang tidak memiliki body bisa dibuat seperti ini:</p>",
"::localvariable": "Variable yang hanya digunakan dalam sebuah fungsi atau method bisa dijadikan <strong>local variable</strong>.",
"//const": "Variable yang berada didalam sebuah Companion Object bisa dijadikan const.",
"string_to_string/": "Variable yang sudah bertipe string tidak perlu lagi dikonversi ke dalam string.",
"access": "<p>Kotlin memiliki <em>Property Access Syntax</em> yang memungkinkan kamu untuk mengakses suatu properti tanpa menggunakan getter setter seperti pada Java. Periksa kembali seluruh kode kamu dan ubahlah penggunaan getter setter menggunakan <em>Property Access Syntax</em>.</p>",
"::camelcase": "Penamaan sebuah variable atau fungsi sebaiknya menggunakan format <strong>camelCase</strong> ().",
"::token": "Untuk alasan keamaan kredensial, hindari menyematkan sebuah TOKEN API ke dalam sebuah kelas, sebaiknya dipindahkan ke dalam berkas build.gradle seperti berikut:<br><pre><code spellcheck=\"false\">android {</code><br><code spellcheck=\"false\">defaultConfig {</code><br><code spellcheck=\"false\"> buildConfigField('String', 'GITHUB_TOKEN', '”b650046bf640e7bf7054093854b8d02a'')</code><br><code spellcheck=\"false\"> }</code><br><code spellcheck=\"false\">}</code></pre><br>Untuk mengaksesnya kamu bisa menggunakan properti<br><pre><code spellcheck=\"false\">BuildConfig.GITHUB_TOKEN;</code></pre>",
"pac/": "7809010824047f5759fca5a5e73ab0ce40eba921",
"private": "<p>Fungsi ataupun variable yang hanya digunakan pada kelas yang sama sebaiknya dijadikan <strong>private.</strong></p>",
"hardcode/": "Hindari penggunaan hardcoded string. Kamu bisa memindahkannya kedalam file <strong>strings.xml</strong>.",
"content_description/": "Pada sebuah <strong>ImageView</strong>, jangan lupa untuk tambahkan attribut <strong>android:contentDescription</strong>. Ini mendefinisikan konten dengan teks yang menjelaskan secara singkat konten tampilan. Properti ini digunakan terutama funtuk aksesibilitas. Karena beberapa tampilan tidak memiliki representasi tekstual, atribut ini dapat digunakan untuk menyediakannya.",
"fu_discussion/": "Hallo kak, pertanyaanya akan kami sampaikan ke tim terkait, jadi mohon ditunggu yaa.",
"material/": "<p>Mulailah untuk menerapkan konsep Material Design ketika mengembangkan proyek Aplikasi.&nbsp;Kamu&nbsp;bisa mengunjungi&nbsp;<a data-target-href=\"https://www.material.io/\" href=\"https://www.material.io/\" rel=\"noreferrer nofollow noopener\" target=\"_blank\">www.material.io</a> sebagai referensi.</p>",
"namespace/": "Namespace yang attribute-nya tidak pernah digunakan sebaiknya dihapus.",
"::companion": "Penulisan companion object sebaiknya diletakkan di paling bawah dari sebuah class sesuai dengan konvensi penulisan kode Kotlin <a data-target-href=\"https://kotlinlang.org/docs/reference/coding-conventions.html#class-layout\" href=\"https://kotlinlang.org/docs/reference/coding-conventions.html#class-layout\" rel=\"noreferrer nofollow noopener\" target=\"_blank\">https://kotlinlang.org/docs/reference/coding-conventions.html#class-layout</a>",
"package grouping": "<p>Cobalah untuk mengelompokkan Class yang memiliki fungsi dan tanggung jawab yang sama dalam suatu package agar project yang dikembangkan memiliki struktur yang lebih rapih dan akan memudahkan kamu dalam melakukan maintenances kedepannya.</p>",
"saran": "<p>Tingkatkan kualitas kode yang kamu tuliskan dengan selalu memperhatikan <strong>saran</strong> atau <strong>warning</strong> yang diberikan <strong>Android Studio</strong> selama proses pengembangan.</p>",
"searchview/": "<p>Fitur <strong>Search</strong> pada aplikasi kamu dapat menggunakan komponen <strong>SearchView</strong>. Kamu dapat mempelajarinya pada tautan <a data-target-href=\"https://developer.android.com/reference/android/widget/SearchView\" href=\"https://developer.android.com/reference/android/widget/SearchView\" rel=\"noreferrer nofollow noopener\" target=\"_blank\">https://developer.android.com/reference/android/widget/SearchView</a>.&nbsp;</p>",
"::()": "Sebuah kelas yang tidak mempunyai primary constructor tidak memerlukan parenthese <strong>()</strong>.",
"init/": "Agar kode menjadi lebih mudah dibaca, sebaiknya kode-kode didalam fungsi ini dipecah menjadi beberapa bagian, misalnya initAdapter(), initViewModel(), observeData() dan yang lainnya.",
"lowercase_package/": "Penamaan sebuah package seharusnya selalu menggunakan format <strong>lowercase</strong>.",
"kotlin style guide": "<p>Agar kode yang dibuat bisa sesuai dengan standar yang sudah ada, kamu bisa mempelajari Kotlin style guide pada link berikut <a href=\"https://developer.android.com/kotlin/style-guide\" rel=\"noreferrer nofollow noopener\" target=\"_blank\">https://developer.android.com/kotlin/style-guide</a><br></p>",
"/null_value": "Jika sebuah value tidak boleh null, maka sebaiknya gunakan tipe data not null.",
"import": "<p>Dalam menulis sebuah kode di dalam sebuah kelas, selalu perhatikan import yang tidak pernah digunakan agar kode yang sudah ditulis menjadi lebih bersih dan enak dilihat. Kamu bisa melakukan reformat code dan <strong>optimized import</strong> supaya code lebih rapi dan bersih dari <strong>import</strong> yang tidak digunakan.</p>",
"::kotlin_version": "Selalu gunakan versi terbaru dari Kotlin Plugin agar kode yang kamu tuliskan sesuai dengan best practice yang disarankan. Saat ini versi terbaru dari Kotlin Plugin adalah 1.4.32. Silakan update pada file build.gradle level root atau project.",
"::unuse_property": "Properti yang tidak digunakan sebaiknya dihapus.",
"text_size_sp/": "Gunakan&nbsp;<em>Scale-Independent Pixels</em> (<strong>sp</strong>)&nbsp;untuk mengatur ukuran teks pada view yang mempunyai attribute&nbsp;<strong>textSize</strong>.",
"::activity": "<p>Penamaan sebuah activity sebaiknya diakhiri dengan kata <strong>Activity</strong>. <strong>Detail</strong> seharusnya <strong style=\"box-sizing: border-box; font-weight: 700; color: rgb(0, 0, 0); font-family: \" source=\"\" sans=\"\" pro\",=\"\" sans-serif;=\"\" font-size:=\"\" 12.8px;=\"\" font-style:=\"\" normal;=\"\" font-variant-ligatures:=\"\" font-variant-caps:=\"\" letter-spacing:=\"\" orphans:=\"\" 2;=\"\" text-align:=\"\" left;=\"\" text-indent:=\"\" 0px;=\"\" text-transform:=\"\" none;=\"\" white-space:=\"\" widows:=\"\" word-spacing:=\"\" -webkit-text-stroke-width:=\"\" background-color:=\"\" rgb(255,=\"\" 255,=\"\" 255);=\"\" text-decoration-thickness:=\"\" initial;=\"\" text-decoration-style:=\"\" text-decoration-color:=\"\" initial;\"=\"\">DetailActivity</strong>.</p>",
"viewmodelscope/": "Sebaiknya gunakan <span style=\"padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;\">viewModelScope</span>",
"::clean": "<p>Kode yang tidak pernah digunakan baik itu Class, method, ataupun variable jika tidak digunakan sebaiknya dihapus. Kamu bisa memanfaatkan <strong>Analyze</strong> - <strong>Code Cleanup </strong>untuk melakukannya dengan cepat.</p>",
"::val_property": "Property yang tidak pernah dimodifikasi, sebaiknya dideklarasikan menggunakan val.",
"::inline_variable": "Tidak perlu membuat variable baru, kamu bisa langsung memasukkan value ke dalam object seperti ini:",
"::function-format": "Sebaiknya penamaan fungsi ini menggunakan kata kerja yang sesuai dengan tujuan fungsi ini dibuat.",
"::build_tools": "Gunakanlah build tools versi terbaru, 30.0.3.",
"fav_info/": "Halaman favorite sebaiknya menampilkan informasi yang konsisten ketika sedang tidak ada data yang dapat ditampilkan.",
"collapse": "<p>Kamu bisa memanfaatkan <strong>CollapsingToolbarLayout</strong> pada halaman detail untuk menambahkan experience pengguna ketika menggunakan aplikasi.</p>",
"back button": "<p>Sebaiknya tambahkan <em>back button</em> pada halaman detail aplikasi kamu, supaya mempermudah navigasi antar halaman sekaligus meningkatkan <em>experience </em>pengguna.</p>",
"ctrl": "<p>Agar kode menjadi lebih rapi kamu bisa menggunakan fitur <strong>Reformat Code</strong> dengan cara menekan <strong>Ctrl + Alt + L / command + options + L</strong>.</p>"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment