Make approach to defining enums consistent across the project

Đang mở
#663 6 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 6 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
go
Lĩnh vực
tooling

Hướng nghiên cứu

So sánh các định nghĩa enum được giới thiệu bởi #654 cho Ecosystem với analysis.Mode, staticanalysis.Task và analysisrun.DynamicPhase. Xem xét cách từng định nghĩa xử lý chuỗi, danh sách, flag, tuần tự hóa JSON và String(), sau đó thống nhất một cách tiếp cận duy nhất được ghi chép, bao quát cơ sở số so với cơ sở chuỗi và hành vi marshaling bắt buộc.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

go internal cleanup needs discussion

#654 introduces the enum type Ecosystem implemented differently to other enums (e.g. analysis.Mode and staticanalysis.Task and analysisrun.DynamicPhase)

We should develop a consistent approach to how we define enums:

Some areas that should be covered:

  • should the base type be string vs numeric
  • how do we handle lists of enums
  • how do enums interact with flags
  • how do enums handle serialization (JSON)

Both:

  • require String()

Numeric based enums:

  • can use iota
  • can consume as little as 8bits (byte)
  • very fast to compare equality
  • encoding.TextMarshaler and encoding.TextUnmarshaler needed to support flag.TextVar and json serialization
  • requires strings to be specified for marshaling and unmarshaling (although an array of strings may make this easier)

String based enums:

  • consume 128 bits per enum
  • simpler String() function and serialization
  • equality is more costly (at minimum two comparisons, maximum the size of the shortest string)
Ngôn ngữ chính
Go
Star
925
Fork
75
Merge trung bình
4 ngày 2 giờ
Pull request đã merge (30 ngày)
3

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ossf/package-analysis

Tất cả issue của ossf/package-analysis

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.