"코드 스타일 및 디자인 패턴"에 대한 프레젠테이션 제공 [닫기]


9

우리 회사 (소규모, 약 3 명의 사무실에서 약 40 명)는 때때로 개발자 중 한 명이 기술 주제에 대한 프레젠테이션을하는 "개발자 워크숍"을 온라인으로 진행합니다. 반드시 우리의 일에 관한 것이 아니라 모든 사람이 자신의 기술과 이해를 향상시킬 수 있도록 돕는 것입니다.

다음 주제를 주최하라는 요청을 받았으며 주제 (내가 제공 한 목록에서 선택)는 코드 스타일과 디자인 패턴입니다. 나는 그 것들이 밀접하게 관련되어 있지는 않지만 나와 함께한다는 것을 알고 있습니다. 코드베이스에서 개선 될 수있는 많은 곳을 보았습니다. 일부는 DailyWTF에 적합 할 수도 있으므로이 프리젠 테이션이 가능한 한 효과적이기를 바랍니다. 문제는 한 시간 안에 정확히 무엇을 다룰 지 모른다는 것입니다.

첫 번째 아이디어는 우리 자신의 코드를 예로 사용하여 "실제로이 작업을 작업에 적용하십시오"라는 요점을 불러 일으키는 것입니다. 그러나 주제는 너무 광범위합니다.

우리의 코드 (PHP)에 어떤 문제가 있습니다

  • 최소 OO. 최근 개선되고 있지만 여전히 많은 글로벌 기능이 있습니다. 물건을 찾는 데 시간이 걸립니다.
  • 글로벌 구성 (의견) 거의 모든 파일에 $ GLOBALS [ 'blah']가 흩어져 있습니다.
  • 일치하지 않는 버팀대 스타일. 최소한 소리로 들리지만 실제로 5 일 전에 구문 오류가 발생하여 어제로 수정되지 않았습니다.
  • 비효율적 인 구성. 일부 영역에서 실행 시간을 70 % 단축하는 몇 가지 기본 개선 작업을 수행 할 수있었습니다.

나는 동료에게 불쾌감을주지 않으면 서이 일이 최대한 유용하기를 원합니다. "스타일"의 어떤 부분에 중점을 두어야하며 어떤 디자인 패턴이 가장 유용할까요?


1
이것은 명백한 결론을 내리기가 어려울 정도로 열린 주제입니다. 프레젠테이션의 요점은 동료들이 특정 표준을 따르도록 설득하기보다는 현재 문제를 인식하도록하는 것입니다. 질문에서 제기 한 요점을 나열하고 이것이 왜 나쁜 관행이며 가능한 결과, 즉 기술적 부채 인 예를 제시하십시오. 또한 ReSharper 및 FxCop과 같은 도구를 언급하십시오.
아무도

답변:


8

이 코드를 작성하는 사람들 앞에서 프레젠테이션에 실제 코드를 사용하는 데 매우주의하십시오.

기껏해야 모든 사람 앞에서 손가락을 가리켜 팀을 화나게 할 것입니다. "당신은 정말 내 눈을 뜨고"대신에 당신이 얻게되는 것은 "모든 사람 앞에서 WTF입니까?

실제 예를 들지만 수정하거나 그것을 작성한 사람이 추적 할 수 없는지 확인하십시오. 또는 당신이 아는 사람들로부터 실제 코드를 가져 가고 또한 오래된 코드 중 일부를 가져 와서이 사람들과 유머와 농담을하십시오.

원래 질문에 답하기 : 가독성에 관한 모든 것 : 가능한 한 적은 인수를 가진 함수, OOP, 길고 상세한 변수 이름 및 설명.


2
+1 : 코드 검토는 외교와 재량을 필요로하는 섬세한 작업이므로 시연 목적으로 사용해서는 안됩니다.
Matthieu

4

귀하의 조직에 버그 추적 시스템이 있다고 생각합니다. 리포지토리에서 가장 초기에 발견 된 버그 중 일부를 제거하고 발생한 이유에 대한 수정 보고서 (전역 변수가 잘못되었거나 의도하지 않은 기능을 수행하는 함수 등)를보고이 문제를 피하는 데 도움이 될 수있는 코딩 스타일 및 디자인 패턴에 대해 논의하십시오. .

이 연구의이 비트를 할 수있는 몇 가지 힘든 일이지만, 이것은 당신이 진짜로 제시하고있는 것을 집에 운전하는 가장 강력한 방법입니다 일을 .


2

"여전히 많은 글로벌 기능".

먼저 목록을 얻으십시오. 완료가 이상적입니다.

둘째,이 목록을 잠재적 인 클래스로 분할하십시오. 클래스 정의에 대해 생각하십시오.

실제 프레젠테이션 중에는 이러한 글로벌 기능을 흡수 할 수있는 가장 크고 가장 눈에 띄고 눈에 띄지 않으며 논쟁의 여지가없는 클래스를 선택하십시오.

토론 주제로. 당신은 아이디어가 있습니다. 합의를 얻어야합니다. 그리고 도중에 질문에 대답하십시오. 그리고 왜 그것이 전역을 공유하는 무작위 함수가 아닌 단일 클래스의 객체인지 이해하도록 도와줍니다.

그런 다음,이 수업을 이해하고 내용에 어떻게 도달했는지에 대해 논의한 후 ....

프로젝터를 켜십시오.

입력을 시작하십시오.

코드를 수정하십시오. 단위 테스트를 다시 실행하십시오.

디자인 패턴과 코딩 스타일 및 작업 완료 하나의 패키지로 모두 제공됩니다.


2

1 시간 안에 기초에 대한 최소한의 이해를 얻을 수있게됩니다.

각 주제에서 3 가지를 골라 그에 집중할 것을 제안합니다. 사람들이 슬라이드를 읽지 않고 내 말을들을 수 있도록 슬라이드를 5-7 단어로 제한합니다. 구성된 예제를 사용하십시오 (따라서 다른 사람들의 제안에 따라 사람들의 발을 밟지 마십시오). 더 많은 것을 배우고 싶은 사람들을위한 연습으로 마지막에 참조 (URL이 책보다 낫습니다)를 제공하십시오. 프리젠 테이션 후에 인트라넷에 슬라이드를 게시하십시오 . (중괄호 문제는 코드 포맷터를 사용하십시오. 아마도 싸울만한 가치가 없습니다.)

추천 주제 :

  • 코딩 스타일

    • PHP에서 OOP의 선 : 스타일로 코딩하기!
    • 글로벌 기능이 코드 암을 유발하는 5 가지 이유
    • 이름이 뭐야? 컨벤션 및 상식 (또는 생각하지 마십시오!)
  • 디자인 패턴

    • 우리 코드의 일부 GoF 패턴; 소개
    • 패턴은 복음이 아니라 도구 일뿐입니다
    • 최고와 최악 : 패턴과 안티 패턴

참고 : 전역 설정은 피하기 어려운 경우가 있습니다. 한 가지 쉬운 해결책은 모든 참조를 init 함수에 넣는 것입니다.

경고 : 나는 워드 프레스를 깨고 사소한 웹 사이트 수정을 수행하기에 충분한 PHP 만 알고 있습니다.


1

프레젠테이션에서 실제 코드를 사용하는 방법-사용 된 경우 좋은 예에만 사용하십시오. 나쁜 예는 절대 사용하지 마십시오. 나쁜 점은 스스로 구성하거나 웹에서 찾으십시오. 이를 통해 동료는 자신의 작업에 자부심을 가지고이를 인정받을 수 있습니다. 또한 나쁜 개발자로 선정되어 화가 나거나 당혹 스러울 수있는 시나리오를 피합니다.


0

코딩 스타일은 나쁜 습관입니다. 제거하기 어렵다. 누군가 나쁜 습관을 버리게하는 가장 좋은 방법은? 그에게 얼마나 못생긴, 역겨운 또는 해로운 것을 직접 보자.

그들에게 나쁜 코드를 보여주고 나쁜 점을 물어보십시오. 그들에게 잠시 생각하고 "Aaahaaa!" 그들에게 엣지 케이스 (펜스 포스트 문제 일까?) 또는 그들의 나쁜 디자인이 다른 모든 것을 무너 뜨린 경우를 보여줌으로써 순간.

너희들은 규칙적인 나쁜 디자인 문제로 고통 받고있는 것 같습니다. 무고한 방식으로 전역 함수가 어떻게 바뀌 었는지에 따라 다른 함수에 해를 끼치는 방법에 대한 예를 보여주십시오. 그들에게 전역 변수와 고전적인 동기화 문제를 보여주십시오.

그것들을 지루하게하거나 방어적인 입장을 취하는 대신 재미있는 방식으로 참여합니까 (이 사람은 우리를 비난하는 사람은 누구입니까?); 예를 들어, 두 단계로 작업을 수행하는 기능을 보여줍니다 (1- 아내 이름 입력) (2- 글로벌 저장) (3- 남편 이름 입력 및 아내 이름을 전역에서 데이터베이스에 저장) (4- 웃음 이혼 통계 기능을 작성하는 농담으로 농담으로 나쁜 동기화 결과는 '새로운'부인을 가진 남자).

우리는 우리가 생각하는 것을 프로그래밍하고 프로그래밍 디자인이 비판을받을 때 어떤 사람들은 그들의 사고 방식과 지능에 모욕적 인 태도를 취하기 때문에 프로그래밍 스타일에 대한 기대를 가질 수 있습니다.

코드 소유자를 당황하게하지 않도록 나쁜 기능을 수행하고 일부 변경을 통해이를 숨기고 청중과 협력하여 개선하십시오. 결과 : 다음날 아침 소스 코드 제어 시스템이 너무 바쁠 것이므로 커피를 마시고 변경 로그를보고 웃으십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.