데이터 가져 오기를위한 메소드 이름 [닫힘]
경고 : 이것은 제가 게시하는 심각한 질문 / 토론이 아닙니다.하지만 대부분의 개발자가이 "문제"를 숙고 해 왔음을 확신합니다 ...
항상 어딘가에서 데이터를 가져와 반환하는 메서드의 명명 규칙에 대한 다른 의견을 얻고 싶었습니다.
대부분의 메서드 이름은 다소 간단하고 분명합니다 ... SaveEmployee (), DeleteOrder (), UploadDocument (). 물론 클래스의 경우에는 각각 간단한 형식 인 ... Save (), Delete (), Upload ()를 사용합니다.
그러나 나는 항상 초기 조치 ... 데이터를 얻는 방법에 어려움을 겪었습니다. 내가 마지막으로 사용한 것이 결코 만족스럽지 않기 때문에 모든 프로젝트에서 서로 다른 명명 규칙 사이를 뛰어 넘는 것 같습니다. 내가 말할 수있는 한 이것이 가능성입니다->
- GetBooks ()
- FetchBooks ()
- RetrieveBooks ()
- FindBooks ()
- LoadBooks ()
당신의 생각은 무엇입니까?
그것은 일관된 의미론 에 관한 것입니다 .
질문 제목 에서 데이터 가져 오기 를 사용 합니다 . 이것은 의미 상 의미 상으로 의미있는 모호하지 않은 방식으로 얻는 것이 무엇 을 의미 하는지 정의해야한다는 점에서 매우 일반적입니다 . 이름 지정에 대해 생각할 때 올바른 길을 갈 수 있도록 다음 예제를 제공합니다.
getBooks()
객체와 관련된 모든 책을 가져올 때 세트에 대한 기준이 이미 정의되어 있고 출처가 숨겨진 세부 정보임을 의미합니다.findBooks(criteria)
메소드 호출에 대한 매개 변수를 기반으로 책의 하위 세트를 찾으려고 할 때 일반적으로 다른 검색 기준으로 오버로드됩니다.loadBooks(source)
파일이나 db와 같은 외부 소스에서로드 할 때입니다.- 나는 그들이 너무 모호과 함께으로 융합 얻을 때문에 검색 / 가져 오기 사용하지 것이다 GET 및 조건과 관련된 명확한 의미가 없습니다.
예 : fetch 는 어떤 엔티티가 원격지에있는 것을 가져 와서 다시 가져와야 함을 의미합니다. 개는 막대기 를 가져오고 검색 은 이전에 소유했을 수도있는 추가 된 의미를 가진 가져 오기 의 동의어입니다 . GET은 동의어입니다 얻을 당신이 뭔가의 단독 소유권을 가지고 다른 사람이 동시에 그것을 얻을 수 있음을 의미한다뿐만 아니라.
의미론 은 매우 중요합니다.
의미와 관련된 언어학 및 논리 분야
주석은 get 및 fetch 와 같은 일반 용어 가 특정 의미가 없으며 사람마다 다르게 해석 된다는 증거입니다 . 용어에 대한 의미를 선택하고 의미가 명확하지 않고 사용과 일치 할 경우 의미하는 내용을 문서화하십시오.
모호하거나 모호한 의미를 가진 단어는 개인적인 의견에 기반한 편견과 선입견으로 인해 다른 사람들에 의해 다른 의미를 부여하며 결코 잘 끝나지 않을 것입니다.
솔직히 어떤 명명 규칙을 사용할 것인지 팀과 함께 결정해야합니다. 그러나 재미를 위해 다음 중 하나를 결정하기 위해 생각하는 기차가 무엇인지 살펴 보겠습니다.
- GetBooks ()
이 메소드는 데이터 소스에 속하며, 어떻게 가져 오는지 신경 쓰지 않고 데이터 소스에서 가져 오려고합니다.
- FetchBooks ()
데이터 소스를 블러드 하운드처럼 취급하고 책을 가져 오는 것이 그의 임무입니다. 한 번에 얼마나 많이 입에 들어갈 수 있는지 스스로 결정해야한다고 생각합니다.
- FindBooks ()
데이터 소스는 사서이며 Dewey Decimal 시스템을 사용하여 책을 찾습니다.
- LoadBooks ()
이 책은 일종의 "전자 책가방"에 속하며 그 안에 넣어야합니다. 로드 후에는 ZipClosed ()를 호출하여 손실을 방지하십시오.
- RetrieveBooks ()
나는 아무것도 없다.
대답은 당신이 편한 것에 집착하고 일관성을 유지하는 것입니다.
barnes and nobles 웹 사이트가 있고 GetBooks ()를 사용하는 경우 Movie 엔티티와 같은 다른 항목이 있으면 GetMovies ()를 사용하십시오. 그래서 당신과 당신의 팀이 좋아하고 일관성을 유지하십시오.
"데이터 가져 오기"의 의미는 명확하지 않습니다. 데이터베이스에서? 파일? 기억?
메서드 이름 지정에 대한 나의 견해는 그 역할이 모호함을 제거하고 이상적으로는 문서를 찾을 필요가 없다는 것입니다. 나는 이것이 더 긴 메소드 이름을 희생하여도 이루어져야한다고 믿습니다. 연구에 따르면 대부분의 중급 이상 개발자는 낙타 케이스에서 여러 단어를 읽을 수 있습니다. IDE 및 자동 완성을 사용하면 긴 메서드 이름을 작성하는 것도 문제가되지 않습니다.
따라서 "fetchBooks"를 볼 때 컨텍스트가 명확하지 않은 경우 (예 : BookFetcherFromDatabase라는 클래스) 모호합니다. 어디에서 가져와? 가져 오기와 찾기의 차이점은 무엇입니까? 또한 일부 개발자가 의미론을 특정 키워드와 연관시키는 문제가 발생할 위험이 있습니다. 예를 들어 데이터베이스 (또는 메모리) 가져 오기와로드 (파일에서) 또는 다운로드 (웹에서)를 비교합니다.
차라리 "fetchBooksFromDatabase", "loadBookFromFile", "findBooksInCollection"등과 같은 것을보고 싶습니다.보기에는 좋지 않지만 길이를 넘으면 명확합니다. 이 글을 읽는 모든 사람들은 당신이하려는 일을 즉시 얻을 것입니다.
OO (C ++ / Java)에서는 getSomething 및 setSomething을 사용하는 경향이 있습니다. 항상 그런 것은 아니지만 해당 데이터 개체를 나타내는 클래스에서 개인 속성을 가져 오거나 설정하는 게터 / 세터 쌍이기 때문입니다. 플러스로 Eclipse가 생성합니다.
"메모리에로드"에서와 같이 파일을 의미 할 때만로드를 사용하는 경향이 있으며 일반적으로 기본 요소, 구조체 (C) 또는 객체로로드하는 것을 의미합니다. 웹에서 보내기 / 받기를 사용합니다.
위에서 말했듯이 일관성은 모든 것이며 여기에는 교차 개발자가 포함됩니다.
참고URL : https://stackoverflow.com/questions/2141818/method-names-for-getting-data
'IT박스' 카테고리의 다른 글
트램폴린 기능은 무엇입니까? (0) | 2020.09.10 |
---|---|
자바 동적 바인딩 및 메서드 재정의 (0) | 2020.09.10 |
emacs / elisp : 해시 (파운드, 숫자 기호, 옥토 토르 프) 기호는 무엇에 사용됩니까? (0) | 2020.09.10 |
Jackson으로 열거 형 직렬화 (0) | 2020.09.09 |
백그라운드에서 애플리케이션의 출력을 / dev / null로 리디렉션하는 방법 (0) | 2020.09.09 |