# [한라대학교 공지 알림 봇] 진짜 제대로된 클래스화

- Author: @mildsalmon
- Published: 2020-03-11
- Updated: 2021-11-12
- Source: http://blex.me/@mildsalmon/%ED%95%9C%EB%9D%BC%EB%8C%80%ED%95%99%EA%B5%90-%EA%B3%B5%EC%A7%80-%EC%95%8C%EB%A6%BC-%EB%B4%87-%EC%A0%9C%EC%9E%91%EA%B8%B0-10-%EC%A7%84%EC%A7%9C-%EC%A0%9C%EB%8C%80%EB%A1%9C%EB%90%9C-%ED%81%B4%EB%9E%98%EC%8A%A4%ED%99%94
- Tags: python, 텔레그램봇, 한라대학교, 웹크롤링, 공지알림봇, 클래스화

---

# Intro

내가 클래스화를 너무 단순하게 생각했다.<br>
디테일한 구조화 없이 그냥 클래스를 만들고 거기에 기존 코드를 다 때려박았다.<br>
가독성은 개판이 되고,<br>
쓸모없는 부분이 너무 많아졌다.<br>
그래서 그냥 이번에는 A4에 전체적인 흐름을 그림으로 그려서 다시 클래스화를 진행하고자 한다.<br>
최대한 비슷한 기능끼리 모듈을 만들었다.<br>
코드는 초반에 Doc을 추가해서 모듈에 대한 간략한 설명을 추가할 예정이다.<br>

~~이전글은 너무 쪽팔려서 지웠다.~~

# 모델링

![](https://static.blex.me/images/content/2020/3/10/xIlvRmkJ53GuxdE380Q8.jpg)

위 사진을 보기 쉽게 표시해보면 아래와 같다.

```c
(D)notice_alarm
		|--- (D)data_file
					|--- (F)~.txt
		|--- (D)module
					|--- (F)dankook.py
					|--- (F)halla.py
					|--- (F)notice_alarm.py
		|--- (D)security
					|--- (F)chat.txt
					|--- (F)token.txt
					|--- (F)security_da
		|--- (D)telegram_bot
					|--- (F)telegram_bot_control.py
		|--- (F)main.py
		|--- (F)run.py
```

1. 같은 기능을 하는 함수, 클래스끼리 모듈로 묶었다.
2. 공통점이 있는 모듈은 디렉터리별로 분류했다.

완벽한 코드인지는 잘 모르겠다.<br>
사실, 단국대 크롤링 부분은 좀 더 개선을 해야하는 부분이다.<br>
좀 더 데이터를 잘 가공할 수 있을꺼 같은데 오늘 이 공지 알림 봇에<br> 할당한 시간이 부족해서 완벽히 끝마치지는 못했다.<br>
내일 혹은 빠른 시일내에 보완을 해야겠다.<br>

# 코드

코드가 꽤 길다?<br>
솔직히 긴건 아니다.<br>
길진 않지만, 모듈별로 나눠져 있어서 이 글에 붙여넣기 해봐야 가독성이 많이 떨어진다.~~심미성도...~~<br>
그래서 그냥 github 주소를 게시하겠다.<br>
관심이 있는 사람은 깃헙으로 이동해서 fork를 해서 마음대로 코드를 활용해보자.<br>
[Notice_Alarm/Test](https://github.com/mildsalmon/notice_alarm/tree/master/Test)

그리고 이 변경된 코드는 일주일정도 테스트 서버에서 돌려보고 기존 서비스 코드와 변경할 예정이다.<br>
현재 발견되지 않은 버그가 있을지도 모르고,<br>
코드 변경이 급한 것도 아니기에.

# 마치며

주석을 달고 싶었지만.<br>
나 혼자만 활용하는 코드여서 달지 않고 코딩했다.<br>
다음 시간에 주석도 달고 \_doc\_도 달아야겠다.<br>

토이 프로젝트로 만든 프로그램이다.<br>
근데 해보고 싶은게 너무 많아서 조금 거대(?)해졌다<br>

코드가 더러워서 클래스화를 진행했다.<br>
클래스화를 진행하다보니 파일들이 모듈별로 나눠지게 되었다.<br>
전국에 있는 모든 학교를 추가해도 부담이 없어졌다. (학교별로 모듈을 나눴기 때문에)<br>

마지막으로 이 블로그의 주인장 Baealex님께 감사하다고 전하고 싶다.<br>
이름 짓기로 고민할때 코딩 스타일도 봐주면서 많이 도움을 주셨다.<br>
클래스화를 하면서 고통받았던게 변수 이름짓기였다.<br>
변수 이름을 어떤걸로 지을까?가 아니라.<br>
변수 이름을 어떤 방식으로 지어야 하는가?였다.<br>
파이썬은 PEP8 스타일 가이드가 있다.<br>
꼭 따를 필요는 없다고 생각할지 몰라도,<br>
저 규칙대로 작성하니까 가독성이 많이 올라가고,<br>
코딩할때도 편한 느낌이다.<br>
그리고 가독성.<br>
가독성을 높이기 위해서 시작한 클래스화는 아니지만.<br>
하다보니 가독성을 놓치고 싶지 않았다.<br>
이 코드들은 나중에 **내가** 재사용할꺼니까.<br>
물론 이렇게 한번 진행하니까 팀프로젝트에서도 가독성을 많이 신경써야겠다고 생각했고, 다짐했다.<br>

![](https://static.blex.me/images/content/2020/3/11/1eCPr6oqrdVOufrJ0EMQ.png)

~~절대 시켜서 전국 대학교를 추가하려는게 아니다;<br>~~

그리고 응용하면 대학교 뿐만 아니라 게시판이 있는 모든 홈페이지는 앵간해선 다 추가할 수 있다.<br>

코드를 확인하고 좀 더 고쳐야한다면 마음껏 욕해도 된다.<br>

그럼 끊임없이 쏟아내던 이 시리즈는 이제 그만 마쳐야겠다.<br>
긴 시리즈 읽으시느라 고생하셨습니다.<br>

다음에 해보고 싶은 프로젝트는<br>
1.전국 대학교를 차근 차근 추가하면서 데이터 분석을 해보는 것과<br>
2.텔레그램 봇을 만들어서 원하는 대학교로 채널링크를 알려주는 진짜 봇을 만들어볼 예정이다.<br>
