PHPer, 루비 안 쓴 지 오래됐어.

8119 단어 PHPLaravelRubyRails

컨텐트

  • 루비(Rails)에 대한 PHPer(Laravler)의 소감
  • 내 배경

  • PHP 성분이 많은 인생
  • 초기 터치 FuelPHP
  • 몇 년 동안 저는 라벨
  • 을 썼어요.
  • 루비는 2011년쯤에 놀았어요.

  • 읽은 기억이 나요. 메타프로그래밍 루비 흥분했어요.
  • 그때 레일스를 만져보니'그랬구나'
  • 작업 중 결국 사용하지 않았지만 루비로 풀어보기
  • 이런 배경.
    최근에 Rails에서 일해야 하기 때문에 PHPer(또는 Laraveler)가 느끼는 Rails와의 차이를 좀 쓰고 싶어요.
    이미 Rails 프로젝트가 있는데 거기서 조인하는 느낌이에요.

    Autoload를 몰라요.


    PHP 로드
    require_once __DIR__ . '/path/to/file.php'
    
    루비 로드
    require "path/to/file"
    
    여기까지는 아무 문제가 없지만 오토로드는 몰라요.

    PHP 시

    namespace \Foo;
    
    use \Foo\Bar\Hoge;
    
    class Xxx extends Hoge {
    }
    
    이 같은 느낌은'반드시 써야 하는 반의 전표'라는 제한이 있어 귀찮지만'(appRoot)/Foo/Bar/Hoge.php에 있구나'라는 것을 알 수 있다.
    요즘은 거의 PSR-4의 autoload라서 PSR-4를 읽으면 좋을 것 같아요.
    참조: Project Euler

    Ruby(Rails) 시

    module Foo do
      class Xxx extends Hoge
      end
    end
    
    뭐!?!?!?갑자기 Hoge 어디서 나왔어!?!?!?!?
    호지가 누구야!?!?!?!?!
    나는 대단하다고 생각한다.
    https://qiita.com/inouet/items/0208237629496070bbd4
    https://qiita.com/eggc/items/ae09d32df5d994522ca1
    최신 버전이 어떻게 움직일지는 모르지만 "Rails가 열심히 찾고 있다"는 말에 수락했다.
    이해와 동시에 "아~ 패스를 명시하고 싶구나~"하는 마음도 든다.

    멋있지 않아요.


    추기: 다음은'멋있지 않다'는 것에 대한 나의 오해가 대충 포함되어 있으니 무시해 주십시오.
    댓글로 보내주셔서 감사합니다
    PHP의 이거.
    piyo(bar(foo($x)));
    
    루비가 이렇게 돼요.
    piyo bar foo x
    
    좋지만 "멋있는 게 얼마나 싫었어???"이런 마음이 가득하다.foo 매개변수가 3개일 경우
    piyo bar foo 1,2,3
    
    알지만 왠지 멋있는 모습을 쓴 것 같아.
    piyo(bar(foo(1,2,3))
    
    멋지다~!
    그렇게 생각하지만 루보캅 같은 놈은 "잘생겼다고 쓰지 마"이미 싫었어.

    블락의 불협화감이 느껴져요.

    [1,2,3].reject {|n| n > 2}.map {|n| n * 2}.map &:to_s
    
    이것
    [1,2,3].reject do |n|
      n > 2
    end.map do |n| 
      n * 2
    end.map &:to_s
    
    이 느낌은 똑같은데 왜 두 문법으로 나뉘었을까.어느 하나면 되잖아!end.map 같은 느낌이 대단해요.

    회신이 없다

    def hoge(x)
      if x > 5
        return x * 3
      end
      x
    end
    
    때로는 끼고, 때로는 안 끼고!!!뭐야!!!
    필요 없는데도 리턴을 넣었어. 루보캅이 말했다. "너 리턴 넣은 거 아니잖아!"이렇게 말해.벌써

    RubyDoc이 없습니까?


    최근의 PHP 모델은 물론이고 튼튼하지만 적어도 선언할 때의 불편함은 많이 사라졌다.
    번역용이라기보다는 프로그래밍할 때의 도움형이라는 측면에서 매우 편리하다.
    PHP7 이전 시대에도 PHP는 PHPDoc 에서 다소'모델이 무엇인지 명시하는'문화가 있었다.
    class Foo {
      /**
       * @param integer $x
       * @param integer $y
       * @return integer
       */
      public function something($x, $y) {
        return $x * $y;
      }
    }
    
    이런 느낌, "내 스타일을 발표하고 싶다!!!"욕망
    class Foo {
      public function something(int $x, int $y): int {
        return $x * $y;
      }
    }
    
    요즘 이렇게 시크하게 전화하니까 너무 좋네요.
    JS는 TypeScript 이전에도 JSDoc이 있었고, 물론 RubyDoc도 있었다.
    그리고 RubyDoc은 다른 녀석이에요.문서 만드는 놈.
    그런 거 아니야.
    RDL이라는 녀석이 있는 것 같은데 뭐랄까...too much.
    "루비의 사상적, 문화적으로 이런 유형의 선언과 사이가 좋지 않다"는 건 알지만 "파라미터가 어떻게 올지 모르는 상황이 두렵다", "에이...string을 내게 맡긴 바보가 죽을까...?"이런 마음.string이 준 녀석은 바보라는 생각이 들죠.

    총결산


    다른 것도 많다고 생각했지만 생각난 범위 내에서 불협화음이 느껴졌다.
    루비를 말하는 게 아니라'루비의 세계관에 전혀 익숙하지 않은 나'라는 느낌이다.
    한 글자를 쓰거나 Rspec의 DSL감은 독특하게 쓰는 경우도 많지만 아무래도 형 시스템 주변의 사상 차이가 크다고 생각한다.
    오리구이가 누구에게 좋은지 아직 모르기 때문에 적당한 날을 기대하고 있다.
    강바닥

    좋은 웹페이지 즐겨찾기