[Clone Types]Near miss clone 範例問題


75
views
1
4 months ago by
green  
def do_something_cool_in_Python ( filepath , marker = '--- end ---' ):
  lines = list()
  with open ( filepath ) as report :
    for l in report :
      if l.endswith ( marker ):
        lines.append ( l ) # Stores only lines that ends with " marker "
return lines # Return the list of different lines
import os
def do_somthing_with ( path , marker = '--- end ---' ):
  # Check if the input path corresponds to a file
  if not os.path.isfile ( path ):
    return None
  bad_ones = list()
  good_ones = list()
  with open ( path ) as report :
    for line in report :
      line = line.strip()
      if line.endswith ( marker ):
        good_ones.append ( line )
      else :
        bad_ones.append ( line )
# Return the lists of different lines
return good_ones , bad_ones


請問上面兩段程式碼為何互為clone
依照我的觀察,第一段只取出結尾是marker的字串
而第二段同時取出結尾為marker與不為marker的字串
基本上輸出結果應該不同,請問是哪個思考點出現問題
還是說只要這個函式在取出值的時候第二段只取第一個做使用即可

2 Answers


2
4 months ago by
就是你講的阿~

  • Near miss clones
是"包括"變量、函數或方法的名稱和變數類型和佈局的變化之外,原本程式碼還被進一步的修改(插入/刪除),但程式碼其實還是"有"做一樣的事。


所以return lines  跟 return good_ones 的回傳值就是一樣的。
0
4 months ago by
green 提出問題非常好, 可惜只有一位同學回答. 我明天會補充說明, 你再參考看看.
Please login to add an answer/comment or follow this question.

Similar posts:
Search »
  • 作業二的要求再提醒, 請大家注意
    Dear all: 上課時說過, 在作業二中, 四個 command 不要重複(不論何種 arguments/options). 你可以跟課堂上或同學說過的 command 重複, 條件是採用...