2009-03-03 20 views
6

Ngày khác, tôi đã xem qua mã của chúng tôi và tôi bắt gặp tên lớp IdempotentObject Tôi không biết điều này có nghĩa là gì vào thời điểm đó nên tôi đã đặt câu hỏi liệu đó có phải là tên được chọn kém không. Tôi phát hiện ra người đã viết nó và hỏi nhà phát triển tại sao anh ta đã đặt tên cho nó quá gây nhầm lẫn. Anh ta rất ngạc nhiên khi tôi không biết nó có ý nghĩa gì và nói với tôi rằng đó là một cái tên được lựa chọn tốt bởi vì đối tượng là Idempotent.Chúng ta vẽ đường bằng từ vựng khi đặt tên ở đâu?

Ở một bên, tôi thấy một lý lẽ để giữ cho nó đơn giản và mọi người đều hiểu mọi thứ đang đọc lúc đầu. Mặt khác, chúng ta có ý tưởng rằng chúng ta nên đặt tên chính xác và nếu bạn không biết ý nghĩa của nó.

Cái nào tốt hơn, chính xác hoặc dễ hiểu hơn?

+0

Nếu bạn không thích IdempotentObject, bạn đã đề xuất thay thế tên nào với IdempotentObject? –

+0

Tôi đã không đề xuất một sự thay đổi, tôi nhìn nó lên và hỏi tại sao anh ta sử dụng nó. Nhà phát triển khác đã đề xuất rằng * AlwaysTrueObject * sẽ là một sự thay thế, chúng tôi đã để nó như * IdempotentObject * hiện tại. –

+1

LogicalConstructConsistingOfBothCodeAndDataForWhichAllOperationsAreDefinedAndImplementedSuchThatNoMatterHowManyTimesTheyAreInvokedTheEndResultWillBeTheSameAsThatResultingFromASingleInvokation – Shog9

Trả lời

14

Không vi phạm, nhưng bất kỳ ai có bằng CS hoặc những người hy vọng thực hành trong lĩnh vực này sẽ nhận ra thuật ngữ "Idempotent" có ý nghĩa cụ thể trong khoa học máy tính ngay cả khi bạn không biết thuật ngữ và phải tìm kiếm lên.

Mặt khác, tôi không nghĩ rằng các đối tượng nên có từ "Đối tượng" trong tên - đó là dư thừa.

Bây giờ, nếu nó được gọi là "IdempotentDataAccessor" hoặc một cái gì đó vừa chính xác vừa mang tính mô tả, thì sẽ tốt.

+0

Tôi nghĩ rằng phần "Đối tượng" chỉ là một số ẩn danh. Nó có thể là một cái gì đó giống như IdempotentMap hoặc IdempotentBook. Vấn đề lớn nhất của tôi là tính ngẫu nhiên áp dụng cho các hàm, không phải đối tượng. –

+0

Không phải là Object –

+0

Đặt tên cho một lớp "Object" là xấu xí. Bạn nên đánh bại anh ta cho * đó * một phần của tên! – Shog9

8

Chính xác là quan trọng hơn. Nhà phát triển ban đầu hoặc bạn có thể đã để lại nhận xét sau đó để giải thích cách đặt tên nếu đó không phải là thuật ngữ có thể dễ dàng tìm thấy trong từ điển hoặc thường được biết đến với khán giả.

+0

mạnh mẽ không đồng ý - người viết không nên bị buộc phải đoán lần hai liệu người đọc trong tương lai có hiểu được các thuật ngữ chuẩn trong CS hay không, câu trả lời đầu gối OPs là sai – annakata

+0

Trong trường hợp này, nhận xét sẽ là ngớ ngẩn nhưng tôi có thể xem các trường hợp khác mà nhà phát triển ban đầu sử dụng một số từ vựng cần giải thích. –

+0

Điều này nghe có vẻ ngớ ngẩn nhưng tiếng Anh là ngôn ngữ thứ hai của tôi, tôi phải tra cứu 'không đáng kể'. Tôi đồng ý rằng trong trường hợp cụ thể này, tùy thuộc vào đối tượng (tức là nói tiếng Anh), nhận xét có thể không được bảo đảm. Về nguyên tắc, lớp học cần được giải thích để giải thích mục đích và trách nhiệm của nó. –

4

Tôi khuyên bạn nên hạn chế tên thành tên miền nằm trong miền của vấn đề. Idempotent sẽ được chấp nhận cho một ứng dụng toán học cấp cao. Tôi muốn sử dụng tên khác nếu đây là một ứng dụng kế toán.

Nhận xét có thể hữu ích trong một số trường hợp, nhưng tôi muốn thay đổi tên.

+0

idempotent là một thuật ngữ được sử dụng rộng rãi trong CS. ngay cả lập trình viên kế toán ứng dụng nên biết văn học của họ – Javier

1

Vâng, điều đó rất chủ quan. Có lẽ đối với người đã viết tên lớp thì rất dễ hiểu. Rất khó để xác định từ vựng nào là dễ hiểu hoặc khó hiểu vì những người đọc mã có thể có nhiều nền tảng khác nhau.

5

"Tôi không biết điều này có nghĩa là tại thời điểm vì vậy tôi đã quyết định rằng đó là tên được chọn kém."

Có vấn đề của bạn. Nếu bạn không biết điều gì đó có nghĩa là câu trả lời chính xác là để tìm hiểu.

+0

Tôi đã làm, tôi có nghĩa là tôi không biết khi nào tôi đọc nó. –

+0

Tôi biết, và làm theo trên ".. tôi cũng quyết định" là nơi đây là một vấn đề. Bạn không thể đưa ra quyết định khi bạn không sở hữu sự thật. – annakata

+0

Điều đó đã không xảy ra, quyền của bạn về việc đưa ra các quyết định không rõ ràng. –

2

Tôi không thể nghĩ ra bất kỳ cách súc tích nào khác để mô tả tính ngẫu nhiên. Tôi không nghĩ rằng đây là một vấn đề, vì idempotence là một thuật ngữ rất thường xuyên được sử dụng trong các giao diện RESTful, và các mô tả rõ ràng rất dễ tìm trong một tìm kiếm của Google.

3

Là nhà phát triển bạn thường thấy mã, hãy chú ý đến một tính năng của một ngôn ngữ hoặc thư viện mà bạn không quen thuộc, tìm kiếm và kết hợp nó vào việc sử dụng ngôn ngữ đó.

Điều này không khác gì.

Bạn không ép buộc người khác tránh các tính năng ít được biết đến của C#, tại sao bạn làm như vậy cho tiếng Anh hoặc bất kỳ ngôn ngữ nào khác?

Tra cứu nó, tìm hiểu nó. Cho dù bạn sử dụng nó là tùy thuộc vào bạn, nhưng xin vui lòng không hạn chế sử dụng của người khác. Bạn có một tham chiếu.

-Adam

Các vấn đề liên quan