cpp-review

Meninjau kode C++ terhadap Panduan Gaya C++ Google. Gunakan saat meninjau kode C++, pull request, atau saat diminta memeriksa kepatuhan gaya kode.

npx skills add https://github.com/clickhouse/pg_stat_ch --skill cpp-review

C++ Code Review (Google Style)

Review C++ code for compliance with the Google C++ Style Guide.

Review Checklist

Naming

  • Types use PascalCase
  • Functions use PascalCase (accessors use snake_case)
  • Variables use snake_case
  • Class members have trailing underscore: member_
  • Constants use kPascalCase
  • Macros use UPPER_CASE with project prefix

Headers

  • Has #define guard: PROJECT_PATH_FILE_H_
  • Self-contained (includes all dependencies)
  • Includes ordered: related header, C system, C++ stdlib, other libs, project
  • No forward declarations unless necessary

Classes

  • Single-argument constructors are explicit
  • Data members are private
  • Copy/move semantics explicit (= default, = delete)
  • No virtual calls in constructors
  • Uses composition over inheritance when appropriate

Functions

  • Returns values instead of output parameters when possible
  • Parameters ordered: inputs before outputs
  • Functions are ≤40 lines (prefer smaller)
  • Uses override/final for virtual overrides

Modern C++

  • Uses nullptr (not NULL or 0)
  • Uses C++ casts (not C-style)
  • Uses range-based for loops where appropriate
  • Uses auto appropriately (not excessively)
  • Smart pointers for ownership (unique_ptr, shared_ptr)

Formatting

  • 80 character line limit
  • 2-space indent
  • Braces on same line as control structures
  • Spaces around binary operators

Feedback Format

Use severity levels:

  • 🔴 MUST FIX: Style violations or bugs that must be fixed
  • 🟡 SHOULD FIX: Strong recommendations for improvement
  • 🟢 CONSIDER: Optional enhancements or suggestions

Example Review Comment

🔴 **MUST FIX**: Missing `explicit` on single-argument constructor
Line 45: `Foo(int value)` should be `explicit Foo(int value)` to prevent
implicit conversions.

🟡 **SHOULD FIX**: Function too long
Lines 78-145: `ProcessData()` is 67 lines. Consider breaking into smaller
functions for readability and testability.

🟢 **CONSIDER**: Use structured bindings
Line 23: `auto [iter, success] = map.insert({key, value});` would be clearer
than separate `.first` and `.second` access.

Lebih banyak skill dari clickhouse

clickhouse-best-practices
clickhouse
28 aturan praktik terbaik ClickHouse yang diorganisir berdasarkan desain skema, optimasi kueri, dan strategi penyerapan data. Mencakup tiga area kritis: pemilihan kunci utama dan tipe data (keputusan desain yang tidak dapat diubah), optimasi JOIN dan kueri, serta pengelompokan penyisipan dengan penghindaran mutasi. Termasuk 28 aturan yang diprioritaskan berdasarkan dampak, dengan aturan desain skema dan optimasi kueri yang ditandai KRITIS karena mekanisme penyimpanan kolom dan indeks jarang ClickHouse. Menyediakan prosedur peninjauan terstruktur untuk...
clickhouse-js-node-coding
clickhouse
Referensi: https://clickhouse.com/docs/integrations/javascript
clickhouse-js-node-coding
clickhouse
Write idiomatic application code with the ClickHouse Node.js client (`@clickhouse/client`). Use this skill whenever a user is *building* against the Node.js…
clickhousectl-cloud-deploy
clickhouse
Gunakan saat pengguna ingin menyebarkan ClickHouse ke cloud, beralih ke produksi, menggunakan ClickHouse Cloud, menghosting layanan ClickHouse terkelola, atau melakukan migrasi dari lokal…
clickstack-otel-collector
clickhouse
Gunakan saat pengguna ingin menghubungkan kolektor OpenTelemetry ke layanan ClickStack Terkelola di ClickHouse Cloud, baik dengan menerapkan kolektor lokal baru…
infra-clickhouse
clickhouse
Menyiapkan dan mengelola ClickHouse menggunakan CLI clickhousectl — menginstal dan menjalankan server ClickHouse lokal untuk pengembangan, serta membuat managed ClickHouse Cloud…
infra-postgres
clickhouse
Menyiapkan dan mengelola Postgres menggunakan CLI clickhousectl — menjalankan Postgres lokal berbasis Docker untuk pengembangan, serta membuat dan mengoperasikan ClickHouse terkelola…
clickhouse-best-practices
clickhouse
WAJIB digunakan saat meninjau skema, kueri, atau konfigurasi ClickHouse. Berisi 31 aturan yang WAJIB diperiksa sebelum memberikan rekomendasi. Selalu baca…