2014-03-28 2 views
0

어떻게이 코드를보다 효율적으로 만들 수 있습니까? Net-beans는 내 기능에 너무 많은 라인이 있다고 말하고있다. 또한 if 문을 가지고있는 곳에서 새로운 함수를 도입해야한다고 말하고 있습니다. 어떤 몸이 제 기능을 좋은 기능을 작성하고 만들기를 도와 줄 수 당신은하지 그런 종류 이상, 심각 경고 넷빈즈을 안내 기능을 향상시키기

function dispalyEvent($weekNr, $week, $year){ 
    echo "<p>"; 
    $gendate = new DateTime(); 
    $gendate->setISODate($year,$week,$weekNr); 

    $month = $gendate->format('m'); 
    $day = $gendate->format('d'); 
    $event_query = mysql_query("SELECT * FROM calendar ORDER BY starttime"); 

    while($event = mysql_fetch_array($event_query)) { 
    $startYear = $event['startyear']; 
    $startMonth = $event['startmonth']; 
    $startDay = $event['startdate']; 
    $endYear = $event['endyear']; 
    $endMonth = $event['endmonth']; 
    $endDay = $event['enddate']; 

    $period = new DatePeriod(
      new DateTime($startYear.$startMonth.$startDay), 
      new DateInterval('P1D'), 
      new DateTime($endYear.$endMonth.$endDay +1) 
    ); 

    $currentDate = $year."-".$month."-".$day; 

     foreach ($period as $savedDate) { 

      if ($currentDate == $savedDate->format('Y-m-d')){ 
       buildEvent($event['ad'], $event['starttime'], $event['title'], $event['endtime'], $event['location'], $event['address'], $event['price'], $event['description']); 
      }  
      if ($event['Approved'] == "Approved"){ 
        buildEvent($event['ad'], $event['starttime'], $event['title'], $event['endtime'], $event['location'], $event['address'], $event['price'], $event['description']); 
      } 

     } 

    } 
    echo "</p>"; 
} 
?> 
+1

한 가지 방법. 대신에 [MySQLi] (http://www.php.net/mysqli) 또는 ['PDO'] (http://www.php.net/PDO)를 사용해야합니다. – Tularis

+0

다른 사람이 코드를 검토하도록하려면 [codereview.se] –

답변

1

작은. 대부분은 구성 가능하며 변경할 수 있습니다. 코드를 확인하는 데 도움이되는 규칙을 설정 한 특정 규칙을 팀에 강제 적용하려면 팀과 함께 작업 할 때 유용합니다.

Tularis가 말한 것 외에 내가 할 수있는 것을 보지 못했습니다. 좋은 코드가 항상 짧지는 않다는 것을 기억하십시오. 쉽게 이해할 수있는 코드는 얻을 수있는만큼 좋습니다.

2

안전 및 지원을 이유로 MySQLi 또는 PDO으로 전환하는 것 외에; 사용하지 않는 코드의 대부분을 지울 수도 있습니다.

예 : 모든 어레이 값에 대해 실제로 새 변수를 만들 필요는 없습니다.

는 여기에 내가 그것을 만들 것입니다 무엇 : 공식적으로 사용되지 이후가의`mysql` 확장 사용을 중지하는 것입니다 개선

<?php 
function dispalyEvent($weekNr, $week, $year){ 
    echo "<p>"; 
    $currentDate = new DateTime()->setISODate($year,$week,$weekNr)->format('Y-m-d'); 

    $event_query = mysql_query("SELECT * FROM calendar ORDER BY starttime");   
    while($event = mysql_fetch_array($event_query)) { 
     $period = new DatePeriod(
      new DateTime($event['startyear'].$event['startmonth'].$event['startday']), 
      new DateInterval('P1D'), 
      new DateTime($event['endyear'].$event['endmonth'].(event['$endday']+1)) 
     ); 

     foreach ($period as $savedDate) { 
      if ($currentDate == $savedDate->format('Y-m-d') || $event['Approved'] == "Approved"){ 
       buildEvent($event['ad'], $event['starttime'], $event['title'], $event['endtime'], $event['location'], $event['address'], $event['price'], $event['description']); 
      } 
     } 
    } 
    echo "</p>"; 
} 
?> 
+0

에 게시해야합니다. $ currentDate = new DateTime() -> setISODate ($ year, $ week, $ weekNr) -> format ('Ym -디'); –

관련 문제