Tôi nhận được rất nhiều lời chỉ trích từ các lập trình viên khác do tôi sử dụng toàn bộ vỏ thích hợp cho tất cả các biến của mình. Ví dụ, lập trình viên điển hình của bạn sẽ sử dụng employeeCount
cho một tên biến, nhưng tôi sử dụng EmployeeCount
. Tôi sử dụng vỏ thích hợp đầy đủ cho tất cả mọi thứ , có thể là phương thức void, phương thức trả về, biến, thuộc tính hoặc hằng. Tôi thậm chí còn theo quy ước này trong Javascript. Điều cuối cùng thực sự xào xạc những trò đùa của mọi người.
Lý do điển hình được đưa ra là tại sao tôi không nên tuân theo quy ước vỏ "không chuẩn" này là vì trường hợp thích hợp đầy đủ nên được dành riêng cho các thuộc tính và phương thức void. Biến cục bộ và phương thức trả về một giá trị nên có từ đầu tiên bằng chữ thường int employeeCount = getEmployeeCount()
.
Tuy nhiên, tôi không hiểu tại sao.
Khi tôi đặt câu hỏi này, dường như tôi chỉ nhận được một câu trả lời tùy ý về tiêu chuẩn đó . Dù câu trả lời là gì đi nữa, nó thường luôn sôi sục theo cách đó và tôi không đặt câu hỏi. Tôi chỉ làm theo nó. . Câu trả lời tùy tiện không bao giờ đủ tốt cho tôi.
Ngay từ những ngày đầu lập trình macro Excel 97 với Office IDE, tôi chưa bao giờ cần một quy ước vỏ để cho tôi biết liệu thứ gì đó có phải là biến cục bộ hay thuộc tính hay không. Điều này là do tôi luôn sử dụng quy ước đặt tên rất trực quan. Ví dụ, GetNuggetCount()
rõ ràng gợi ý một phương pháp đi đâu đó và nhận được tất cả các cốm. SetNuggetCount(x)
gợi ý rằng bạn đang gán một giá trị mới cho số lượng cố định. NuggetCount
tất cả tự nó gợi ý một thuộc tính hoặc biến cục bộ chỉ đơn giản là giữ một giá trị. Cuối cùng, người ta có thể muốn nói, "Ah ha! Đó là câu hỏi. Tài sản hay biến số? LÀ GÌ?" Về điều đó, tôi đã trả lời, "Nó có thực sự quan trọng không?"
Vì vậy, đây là tl; dr;: các lý do khách quan, hợp lý, không độc đoán để sử dụng chữ thường cho từ đầu tiên trong phương thức biến hoặc trả về của bạn là gì?
Chỉnh sửa: Dành cho MainMa
Thay thế mã này bằng mẫu mã đầu tiên trong câu trả lời của bạn và xem đối số của bạn nắm giữ tốt như thế nào:
public void ComputeMetrics()
{
const int MaxSnapshots = 20;
var Snapshots = this.LiveMeasurements.IsEnabled ?
this.GrabSnapshots(MaxSnapshots, this.cache) :
this.LoadFromMemoryStorage();
if (!Snapshots.Any())
{
this.Report(LogMessage.SnapshotsAreEmpty);
return;
}
var MeasurementCount = Measurements.Count();
this.Chart.Initialize((count + 1) * 2);
foreach (var s in Snapshots)
{
this.Chart.AppendSnapshot(s);
}
}