buffers – ¿Por qué (point-min) es mucho más popular que 1?

Pregunta:

Busqué en todos los archivos Emacs Lisp en el repositorio Git de Emacs y encontré que (goto-char (point-min)) ocurre 3621 veces y (goto-char 1) ocurre 31 veces. Personalmente, veo muchos (point-min) pero ninguno 1 , incluso en muchos casos, estoy 100% seguro de que la región no está restringida. Entonces, aquí está mi pregunta: ¿ (point-min) todavía se prefiere que 1 incluso en un búfer sin estrechar?

Supongo que 1 es más rápido que (point-min) , sin importar lo leve que sea, porque 1 es constante mientras que (point-min) es una llamada de función. Además, 1 es mucho más corto que (point-min) , 1 carácter frente a 11 caracteres.

Respuesta:

¿Cómo sabe que el búfer no se reduce?

A menos que lo haya ampliado justo antes de llamar a la función, no puede estar seguro. Además, "gran software" se define a menudo como "utilizado de formas que el autor nunca ha imaginado", por lo que uno siempre debe estar preparado para el uso inusual de su código.

La legibilidad del código es el rey

Cuando escribes (goto-char 1) , la persona que lee el código (incluyéndote a ti 6 meses después) gastará una valiosa capacidad intelectual para pensar

  • "¿Cómo sabemos que el búfer no está reducido?" y
  • "¿El primer carácter es 0 o 1?"

Básicamente, a menos que haya (widen) justo antes, necesita un comentario que explique por qué está seguro de que el búfer no se ha reducido.

El costo es trivial

A menos que haya perfilado su código y haya encontrado lo contrario, una suposición segura es que el costo aquí será trivial. En comparación con todas las otras cosas que hace ELisp (red, acceso al disco, incluso coincidencia de cadenas), (point-min) no tendrá un costo significativo (e incluso podría ser más barato , consulte la respuesta de Stefan).

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım