Comments (5)
Mmmh, I see your point and the defaults are pretty much up for debate at this moment!
But, just for the sake of discussion, what are the trade-offs of using aliases? I always thought the exact opposite, but am not sure why if I read it or just assumed ... So, what are the downsides?
from credo.
The problem is that you don't know where the function is coming from further down in the code. Your point about gathering dependencies is a good one. However, once that Alias statement scrolls off the screen that context is lost.
If you're using an editor that has good searching tools, I'll go to a specific section of code and never see the top of the module. So if I see
def twitter_mentions do
┃ TwitterAPI.search(...)
┃ end
I'm going to start looking for lib/twitter_api.ex as the next file to look in and not find it.
Also, if my editor is smart enough to include IEx.Autocomplete or inline function documentation
lookup, it won't find anything about TwitterAPI. Or heck even if I have an iex -S mix command
open in another window. h TwitterAPI gets me no where.
Now you could argue that eventually Elixir support in various tools will get good enough so all
the above scenerios will just work. But that's not today.
from credo.
Agreed. My idea for the "Software Design" category was that these are merely suggestions and less concering than issues from, for example, the "Warning" category.
To your point:
There is the concept of "issue priority" in Credo (note-to-self: I have to explain that in more detail in the README), where low priority issues are not shown in the standard report generated by mix credo
. An example for such a low priority issue is MaxLineLength
, because I found it superficially hard to constrain pattern matches in function signatures to 80 characters and so do Èlixir, Ecto, Plug, and many others.
I am mentioning this because this might be a solution akin to your mix credo --full
suggestion: We could set the AliasUsage
check to low priority, so it will not show by default. But you can show all issues including the low priority ones with a command-line switch (currently named --pedantic
, will rename to --all-priorities
in the next release to be more clear).
What do you think?
from credo.
That sounds great.
from credo.
v0.1.6
contains both changes we discussed here. Thx again! 👍
from credo.
Related Issues (20)
- Predicate callbacks from behavior are not ignored HOT 2
- Issue with Unused variables confused about the strategy HOT 1
- missing spec on unquoted function raise error HOT 3
- Credo.Check.Warning.WrongTestFileExtension displayed in non-test module in v1.7.4 HOT 8
- NoAmbiguousAliases fails on function param with name alias HOT 3
- "Most of the time you are using the multi-alias/require/import/use syntax..." with compile_env HOT 4
- Gracefully handle output of bitstring `:message` in `%Credo.Issue{}` HOT 8
- False positive: spec in quoted HOT 3
- False Positive: Macro sigils with uppercase words HOT 4
- `UnusedKeywordOperation` check should ignore `Keyword.validate!/2` HOT 4
- Arguable advice from `Credo.Check.Refactor.AppendSingleItem` HOT 1
- Predicate function names should not start with 'is', and should end in a question mark flagged for :ets.whereis HOT 2
- Not ready for Elixir 1.16: a lot of 'warning: negative steps are not supported in Enum.slice/2 HOT 1
- Elixir 1.17 issues HOT 7
- Dependency divergence on compile HOT 2
- Unicode characters (arrows) that indicate priority of found issues not printed correctly HOT 2
- Credo.Check.Warning.Dbg: doesn't warn when using `&dbg/1`
- Error `mix credo` on Elixir 1.17 and Erlang/OTP 27 HOT 4
- Credo.Check.Design.SkipTestWithoutComment and many others, fail to run (Elixir 1.17 issue?) HOT 1
- Error upgrading project to Elixir 1.17 HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from credo.