지난 기사에 이어 왜 우리는 nil을 사용합니까? 우리가 당연하게 여기는 다른 것들에 대해 이 질문을 하는 것이 좋은 생각이라고 생각했습니다.
좋아요...
왜 우리는 못생긴 코드의 거대한 덩어리 하나 대신 클래스를 사용합니까?
기본적인 수준에서 우리는 클래스를 사용하여 코드와 데이터를 논리 단위로 구성합니다.
하지만 그 이상의 것이 있습니다.
클래스를 사용하면 추상화를 만들 수 있습니다. .
추상화란 무엇입니까?
당신은 매일, 매분 추상화를 사용합니다.
키보드 다음으로 구성되어 있습니다.
- 케이블
- Cherry MX 블랙 스위치
- 모든 것을 하나로 묶는 플라스틱 케이스
- 내 컴퓨터에 전기 신호를 전송하는 회로 기판
키보드는 이러한 것들을 올바른 방식으로 조합할 때 나오는 개념일 뿐입니다.
내부적으로 어떻게 작동하는지 알 필요가 없기 때문에 추상화입니다. 그것을 사용합니다. 구성 요소를 알 필요도 없습니다!
플러그를 꽂고 입력하기만 하면 됩니다.
이것이 바로 수업을 통해 할 수 있는 일입니다.
추상화가 왜 중요한가요?
추상화는 복잡성을 관리하는 데 도움이 됩니다. .
스티브 맥코넬이 말했듯이:
<블록 인용>“가장 중요한 클래스를 만드는 이유는 프로그램의 복잡성을 줄이기 "
추상화는 이를 어떻게 수행합니까?
세부정보 숨기기 어떤 것이 어떻게 작동하고 공개 인터페이스를 통해 서비스를 노출하는지에 대해.
Ruby 클래스에서 인터페이스는 공용 메소드로 구성됩니다. 자세한 내용은 비공개 방법으로 숨겨져 있습니다.
세부정보 포함 제 말은:
- 인스턴스 변수
- 내부 방법
- 알고리즘 및 데이터 구조
숨겨져 있으면 클래스 사용자에게 영향을 주지 않고 원할 때 언제든지 변경할 수 있습니다.
예를 들어 :
GPS
가 있는 경우 배열을 사용하여 데이터를 저장하는 클래스이며 인덱스 0에 대해 알아야 합니다. 해당 배열에서 위도 및 색인 1을 찾을 수 있습니다. 경도는 알 필요가 없는 세부정보입니다. 클래스의 사용자로.
좋은 수업을 작성하는 방법
이제 이것은 큰 주제입니다. .
SOLID 원칙을 따르는 것과 같이 좋은 수업을 만들기 위해 많은 것이 필요합니다.
그러나 가장 중요한 것은 수업에 일종의 역할이 있어야 한다는 것입니다. , 임의의 방법으로 구성되지 않습니다.
예를 들어 비즈니스 로직(계산, 규칙)은 역할이 다르기 때문에 프레젠테이션 로직(서식)과 분리하려고 합니다.
이 코드 보기 :
require 'rest-client' require 'nokogiri' class ImageCounter def initialize(url) @url = url end def find_images_and_report data = RestClient.get(@url).body html = Nokogiri::HTML.parse(data) images = html.css("img") report = "" report << "=" * 40 << "\n" report << "Found #{images.size} images on #{@url} \n" report << "=" * 40 << "\n" end end reporter = ImageCounter.new("rubyguides.com") report = reporter.find_images_and_report
이 수업이 계산과 프레젠테이션 모두에 어떻게 관련되어 있는지 알 수 있습니다. "빠르고 더러운" 스크립트를 작성하는 경우에는 이 방법이 적합하지만 더 심각한 응용 프로그램의 경우에는 스크립트를 분리해야 합니다.
책임을 분리할 때 다른 프레젠테이션 레이어를 연결하거나 비즈니스 규칙을 변경하고 동일한 프레젠테이션을 재사용할 수 있습니다.
이 코드 재사용 클래스의 측면은 클래스를 더 작성해야 하는 또 다른 좋은 이유입니다.
더 나은 수업을 작성하는 데 도움이 되는 더 많은 아이디어가 있습니다.
다음은 추가 탐색에 도움이 되는 몇 가지입니다.
- 응집 및 결합
- 말하고 묻지 마세요
- 데메테르의 법칙
처음에 클래스를 작성하는 이유를 아는 것이 시작하기에 좋은 출발점이므로 잘했습니다 전체 기사를 읽으셨다면!
요약
우리가 클래스를 작성하는 이유, 추상화가 무엇인지, 왜 중요한지 배웠습니다. 또한 좋은 수업을 작성하는 기본 사항을 배웠고 더 읽어야 할 몇 가지 지침을 제공했습니다.
코드가 큰 덩어리가 되는 것을 원하지 않는 한 수업 디자인을 개선하기 위해 지금 이러한 개념 중 일부를 적용하십시오 🙂
이 기사가 유용했다면 Twitter에서 공유하는 것을 잊지 마세요!